熟悉 WordPress 的朋友们都知道,WordPress 在 URL 链接中的处理算得上是一刀切,所有的特殊符号及字符都是使用减号/连字符(-)来进行分隔,这其实是一种对搜索引擎非常友好的分隔方式,也是谷歌搜索引擎所推荐的连字符,其中谷歌有一句提示“不妨考虑在网址中使用连字符来分隔字词。这样有助于用户和搜索引擎更轻松地识别网址中的概念。建议您在网址中使用连字符 (-) 而非下划线 (_)。”。
当然 WordPress 默认是支持下划线符号,虽然 Google 搜索引擎并不建议这样使用,但是下划线的使用场景也并非没有,例如当我们程序要在封装一个功能函数时,就需要使用下划线作为链接,因为 PHP 本身并不支持连接符或减号,所以技术宅很多时候在分享关于 WordPress 函数时为了在 URL 中体现更精准的函数,所以使用下划线在 URL 链接中也是一种极其友好的使用规范。例如:https://thax.cn/wp_debug.html ,这个链接中的 wp_debug 就是 WordPress 函数,相反如果使用搜索引擎推荐的 wp-debug 反而失去了那种准确的感觉。
那么继续回到今天技术宅想要分享的主题,因为最近想要做一个网站导航,当然也不算是网站导航吧,就是想做一个收集分享优秀网站的网站而已,所以作为 WordPress 的忠实爱好者来说,当然会毫不犹豫的选择 WordPress 建站,所以我就在考虑如何优化 WordPress 文章别名,让 slug 别名直接兼容点(.)符号,这样也就避免了 WordPress 默认使用连接符替换 URL 中的点的尴尬现象,其实对于程序员开发来说也会出现版本号,所以很多网站在分享软件的时候就会难免遇到有版本的分享,这是如果 URL 中的版本号按照 WordPress 默认的连接符分隔也略显尴尬,故此有了今天的解决方案,代码如下:
//WordPress slug 别名兼容点(.)符号
add_filter('sanitize_title', 'thax_allow_dots_in_slug', 10, 2);
function thax__allow_dots_in_slug($title, $raw_title){
if( strpos($raw_title, '.') !== false ){
$title = preg_replace('/[^a-zA-Z0-9_.-]+/', '-', $raw_title); //允许字母、数字和 _.-
$title = preg_replace('/_{2,}/', '_', $title); //替换连续的 _
$title = preg_replace('/.{2,}/', '.', $title); //替换连续的 .
$title = preg_replace('/-{2,}/', '-', $title); //替换连续的 -
$title = preg_replace('/[-._]{2,}/', '-', $title); //替换多个符号
$title = trim($title, '_.-'); //移除开头结尾 _.-
$title = strtolower($title); //转换为小写
}
return $title;
}
依然是 WordPress 优化的老解决方案,将以上代码复制粘贴到当前 WordPress 主题的 functions.php
文件的合适位置,即可让当前的 WordPress 网站别名支持点符号作为别名。
举例:优化前是 thax.cn/go/leixue-com ,优化后是 thax.cn/go/leixue.com
感觉上是不是好看多了?当然啦,这就是一个见仁见智的做法和看法,根据自己的喜好和需要去做就好,技术宅就给大家简单分享到这里。