您可以用一个简单的get-var以更动态的方式来完成,也可以变得更复杂,创建一些重写规则来解析您自己的URL。
下面是一个快速简单的获取var方法-
假设您的分类术语位于:
example.com/alcohol-spirit-type/gin/
这将显示与分类术语关联的两种帖子类型的帖子。
现在,在每个帖子类型的末尾附加一个变量,以创建要过滤的URL,如:
// change these to reflect the actual registered names of your post types
example.com/alcohol-spirit-type/gin/?my_filter=cocktail-recipe
and
example.com/alcohol-spirit-type/gin/?my_filter=distillery
现在在主题的
functions.php
文件来检测此附加变量并相应地调整查询:
function wpa54401_filter_pre_get_posts( $query ) {
if ( isset( $_GET[\'my_filter\'] ) ) {
$query->set( \'post_type\', array( $_GET[\'my_filter\'] ) );
}
return $query;
}
add_filter( \'pre_get_posts\', \'wpa54401_filter_pre_get_posts\' );
现在,访问这些URL中的每一个都应该只提供每种类型中的帖子。
EDIT-
这里有一个过滤器
taxonomy_template
要返回两个新视图的自定义模板,请执行以下操作:
function wpa54401_custom_taxonomy_template( $template ) {
if ( isset( $_GET[\'my_filter\'] ) ) {
$template = dirname( __FILE__ ) . \'/tax-\' . $_GET[\'my_filter\'] . \'.php\';
}
return $template;
}
add_filter( "taxonomy_template", "wpa54401_custom_taxonomy_template" ) ;
模板应命名为
tax-{your post type}.php