是否可以在类别页面上显示多个自定义帖子类型?
例如,我有一个类别“动物”,我可以将其分配给这两种自定义帖子类型:“狗”、“猫”
两个CPT都使用pre\\u get\\u posts筛选器:
function dog_query_post_type($query) {
if( is_category() && $query->is_main_query() && empty( $query->query_vars[\'suppress_filters\'] ) ) {
$post_type = get_query_var(\'post_type\');
if($post_type)
$post_type = $post_type;
else
$post_type = array( \'post\', \'dog\', \'nav_menu_item\');
$query->set(\'post_type\',$post_type);
return $query;
}
}
add_filter(\'pre_get_posts\', \'dog_query_post_type\');
但是只有一个cpt会出现在动物分类页面上。
如果我停用了狗的cpt插件,那么分配给动物的任何猫的cpt都会出现在分类页面上。
我已尝试更改add\\u filter调用的优先级设置。
所有这些都不会影响类别中正常帖子在类别页面上的显示。
我想让任何类型的帖子出现在动物页面上。
我错过了什么?
最合适的回答,由SO网友:shanebp 整理而成
添加到$post_type
数组,不要替换它。。。
function dog_query_post_type($query) {
if( is_category() && $query->is_main_query() && empty( $query->query_vars[\'suppress_filters\'] ) ) {
$post_type = get_query_var(\'post_type\');
if($post_type)
$post_type[] = \'dog\';
else
$post_type = array( \'post\', \'dog\', \'nav_menu_item\');
$query->set(\'post_type\',$post_type);
return $query;
}
}
add_filter(\'pre_get_posts\', \'dog_query_post_type\');