好消息:胡歌网摘新面貌迎接2015~!

WordPress将分类和Tag网址结尾增加斜线”/”的方法

网络技术 胡歌 1149浏览 0评论

WordPress强大之处就是在于,我们能想到的别人早已经实现了,只是我们不知道而已。

网上有很多解决方案,基本归类为:
1. 通过Rewrite Rule 301跳转实现(如果是已经被收录的URL可以的,但刚开始时不建议使用)
2. 通过修改wp-includes/canonical.php实现(升级时会被覆盖,不建议)
3. 通过插件来实现

下面就说一下插件方法:
插件 Permalink Trailing Slash Fixer (https://wordpress.org/plugins/permalink-trailing-slash-fixer/)已经实现这个功能。

下载后查看代码,你会发现只有几行而已。 而且内部调用的是Wordpress自带的方法实现的。 并且不会出现301跳转。 个人认为非常理想的解决方案。
代码如下:

/**
* Public staff only.
*/
if (is_admin()) return;

$permalink_structure = get_option('permalink_structure');
if (!$permalink_structure || '/' === substr($permalink_structure, -1))
return;

add_filter('user_trailingslashit', 'ppm_fixe_trailingslash', 10, 2);

/**
* Appends a trailing slash if it's missing in the permalink structure.
*
* Conditionally adds a trailing slash if the url type is not "single".
*
* @param string $url A URL with or without a trailing slash.
* @param string $type The type of URL being considered (e.g. single, category, etc).
* @return string The URL with the trailing slash fixed.
*/
function ppm_fixe_trailingslash($url, $type)
{
if ('single' === $type)
return $url;

return trailingslashit($url);
}

是不是很简洁呢?
如果你是使用的多站点,而之前的站点SEO还不错,现在准备添加一新站点的话,以防相互有影响建议将上面代码微调后加入到 模板目录functoins.php中(或是使用插件,只在新的站点开户插件功能,也是一样的):

if (!is_admin()) {
function ppm_fixe_trailingslash($url, $type)
{
$permalink_structure = get_option('permalink_structure');
if (!$permalink_structure || '/' === substr($permalink_structure, -1))
{
return;
}
if ('single' === $type || 'page' === $type)
{
return $url;
}

return trailingslashit($url);
}
add_filter('user_trailingslashit', 'ppm_fixe_trailingslash', 10, 2);
}

转载请注明:胡歌网摘 » WordPress将分类和Tag网址结尾增加斜线”/”的方法

发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址