所以,我一直在疯狂地想弄明白这一点。基本上,我创建了两种自定义帖子类型,\'the_case_study
\' 和\'the_video\'
, 带各自的缓动阀\'case-studies\'
和\'videos\'
.
我还创建了三个分类法,它们适用于\\u case\\u研究和\\u视频。这些是\'the_room\'
, \'the_system\'
和\'the_style\'
.
默认情况下,分类法存档显示all posts 标记了给定的术语,永久链接如下所示:
example.com/room/kitchen (displays all posts tagged with kitchen)
我想有一个分类档案
only display the posts of the current custom post type 并且将具有相对于该自定义帖子类型的永久链接。例如:
example.com/case-studies/room/kitchen (should display all case studies tagged with kitchen)
example.com/videos/room/kitchen (should display all videos tagged with kitchen)
我已经在网站的其他地方解决了一个类似的问题,基于
this answer 除其他事项外。然而,我只知道如何在一种职位类型上做到这一点。
这似乎应该是可能的,但我不知道如何去做。本质上,我希望能够找到当前分类页面的父级,其中父级是当前的自定义帖子类型。。。但我不确定这是如何与自定义帖子类型和分类法约束相适应的。
我想做的事可能吗?我应该换个角度思考吗?
SO网友:Matthew Boynes
通过添加自定义重写规则,这很容易做到。这应该让您开始:
add_action( \'init\', \'wpse_100386_rewrites\' );
function wpse_100386_rewrites() {
add_rewrite_rule( \'case-studies/room/([^/]+)/?\', \'index.php?the_room=$matches[1]&post_type=the_case_study\', \'top\' );
add_rewrite_rule( \'videos/room/([^/]+)/?\', \'index.php?the_room=$matches[1]&post_type=the_video\', \'top\' );
}
与往常一样,更改重写规则时,请确保通过转到设置->永久链接并单击“保存更改”刷新重写规则。
SO网友:Cole
您可以直接在模板中更改查询,或使用pre\\u get\\u posts操作。
Inside archive template:
$taxonomies_to_match = array(\'the_room\',\'the_system\',\'the_style\');
if(is_tax($taxonomies_to_match)) {
global $wp_query;
query_posts(array_merge($wp_query->query_vars,array(\'post_type\' => \'the_case_study\'));
}
Action Hook Method:
add_action(\'pre_get_posts\',\'my_post_filter\');
function my_post_filter($query) {
$taxonomies_to_match = array(\'the_room\',\'the_system\',\'the_style\');
if(is_tax($taxonomies_to_match)) {
$query->set(\'post_type\',\'the_post_type_you_want\');
}
}