(Update: 请查看下面的编辑。)
代码:
function itsme_better_editions( $query ) {
if ( $query->is_category() && $query->is_main_query() ) {
$query->set( \'post_type\', array( \'post\' ) );
$query->set( \'tax_query\',
array(
\'relation\' => \'OR\',
array(
\'taxonomy\' => \'category\',
\'field\' => \'slug\',
\'terms\' => \'intl\',
\'operator\' => \'IN\'
)
)
);
}
return $query;
}
add_filter( \'pre_get_posts\', \'itsme_better_editions\' );
我使用此功能显示所有类别下分配给“国际(intl)”类别的职位,即所有类别档案中的职位。
(例如,在我的案例中,类别表示新闻网站的常见版本。)
问题是,使用该功能后,似乎所有归档的术语对象都设置为“国际(intl)”,无论是类别归档、标记归档、自定义分类归档等。
所以for example, 如果我访问“UK(UK)”类别档案<?php single_cat_title(); ?>
显示“国际”而不是“英国”。(NOTE: single_cat_title()
这只是一个示例,也是术语对象更改引起的唯一问题。)
为什么会这样?(尽管有me设置\'relation\' => \'OR\'
.) 我应该怎么做才能解决这个问题?
PS: 令人惊讶的是,这曾经奏效(非常积极),我不知道这在哪个版本的WordPress中出现过。
EDIT: 我刚刚意识到,问题似乎是$tax_query = $query->get( \'tax_query\' );
为空或不是数组。我真的不知道为什么会发生这种情况,以及我的代码出了什么问题。
Related Question: When/why does \'$query->get( \'tax_query\' );\'
return empty?