WP永久链接:在帖子网址

时间:2017-01-17 11:42:33

标签: wordpress url-rewriting categories permalinks posts

我在我的网站/blog//news/中使用了两种不同的类别。我想在帖子中显示/news/类别,但我不想在博客帖子的网址中显示/blog/类别。

我已经有很多帖子和每个类别的不同模板,所以我想避免创建页面来执行此操作。这个想法如下:

/news/ category --> index.php/news/post-name/

/blog/ category --> index.php/post-name/

这可能吗?

1 个答案:

答案 0 :(得分:0)

需要做两件事。首先,使用post_link过滤器使您的帖子网址不同。

function _20170117_post_link( $url, $post, $leavename ) {
    if( in_category( 'news', $post) ) { 

        $url = get_site_url() . '/news/' . $post->post_name ;
    }
    return $url;
}
add_filter( 'post_link', '_20170117_post_link', 10, 3 );

其次,为此制定重写规则:

function _20170117_rewrite() {
  add_rewrite_rule('^news/(.?.+?)(?:/([0-9]+))?/?$', 'index.php?pagename=$matches[1]
&page=$matches[2]', 'top');
  add_rewrite_rule('^news/([^/]+)(?:/([0-9]+))?/?$', 'index.php?name=$matches[1]
&page=$matches[2]', 'top');
  flush_rewrite_rules();
}
add_action('init', '_20170117_rewrite');

请注意flush_rewrite_rules();你不需要每次都执行。就一次。或者您可以转到options-permalink.php并单击“保存”。

我使用以下设置进行了测试:

settings