如何在类别的网址末尾添加斜杠,并在wordpress上的帖子末尾删除斜杠?

时间:2019-01-17 16:26:34

标签: php wordpress url categories permalinks

如何使wordpress类别的URL末尾带有斜杠,而帖子的URL中却没有。像这样:

“ mysite.com/mycategory/” “ mysite.com/mycategory/mypost”

问题是,默认情况下,您可以使用斜杠执行所有操作,也可以不使用斜杠进行所有操作。 (已通过htaccess删除了“类别”前缀)。

2 个答案:

答案 0 :(得分:1)

有两个很好的解决方案:

WP_Rewrite类具有一个名为const options = { cors: { origin: '*', allowedHeaders: '*', credentials: false }, } 的变量,该变量根据您的自定义永久链接结构是否以'/'结尾而动态设置。

$use_trailing_slashes

这意味着所有WP生成的链接(the_permalink,category_link,the_permalink_rss等)都不会以'/'结尾。因此,对于类别页面,WP将显示“ / category / category”而不是“ / category / category /”。

您可以通过使用过滤器或修改您的.htaccess或同时修改二者来解决此问题:

示例user_trailingslashit过滤器

user_trailingslashit函数在返回结果之前将'user_trailingslashit'过滤器应用于结果。它将网址和网址类型提供给过滤器。

$this->use_trailing_slashes = ( '/' == substr($this->permalink_structure, -1, 1) );

因此,要对此进行钩接并在除单个帖子之外的所有URL上添加斜杠,请将此代码添加到插件文件或functions.php主题文件中。

$string = apply_filters('user_trailingslashit', $string, $type_of_url);

Htaccess重定向匹配

您可以设置.htaccess重定向,以强制类别网址始终使用像这样的结尾斜杠:

function fix_trailingsss($s='',$t='single')
{
  if($t!='single')$s=rtrim($s,'/').'/';
  return preg_replace('/^(.*)([^l/])$/i', '\1\2/',$s);
}
add_filter('user_trailingslashit', 'fix_trailingsss', 9999,2);

信息来源 https://www.askapache.com/wordpress/adding-trailing-permalinks/

如有任何其他疑问,请查阅法典:

https://codex.wordpress.org/wp_rewrite

https://codex.wordpress.org/Using_Permalinks

答案 1 :(得分:0)

我这样解决了:

function no_page_slash( $string, $type ){
    if($type == 'single')
        $string = untrailingslashit($string);
   return $string;
}
add_filter('user_trailingslashit', 'no_page_slash', 70, 2);

您的永久链接必须设置为/%category%/%postname%/。