我在我的网站/blog/
和/news/
中使用了两种不同的类别。我想在帖子中显示/news/
类别,但我不想在博客帖子的网址中显示/blog/
类别。
我已经有很多帖子和每个类别的不同模板,所以我想避免创建页面来执行此操作。这个想法如下:
/news/ category --> index.php/news/post-name/
/blog/ category --> index.php/post-name/
这可能吗?
答案 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并单击“保存”。
我使用以下设置进行了测试: