我正在尝试更改主要WP\\U查询对象中税务查询中的一个参数,以便为我的分层分类法的存档创建存档视图。我的目标是更改税务查询中的一个参数,而保留其余参数不变。
我尝试获取当前查询,修改tax\\u查询数组,然后将其传递给set。
add_action( \'pre_get_posts\', \'slug_cpt_category_archives\' );
function slug_cpt_category_archives( $query ) {
if ( is_tax( \'TAXONOMY NAME\') ) {
$tax_query = $query->tax_query->queries;
$tax_query[\'include_children\'] = 0;
$query->set( \'tax_query\', $tax_query );
}
}
当我添加此操作时,它不仅没有产生预期的效果,也没有包括子术语:
add_action( \'wp_head\', \'preh\' );
function preh( ) {
global $wp_query;
print_r( $wp_query->tax_query );
}
我看到现在有两个tax\\u查询,都有
[include_children] => 1
SO网友:gmazzap
@birgire answer 很好(我加1),但是$query->tax_query->queries
可以包含多个分类,并且$query->tax_query->queries[0]
可以是其他分类法的查询。
所以,如果你想设置\'include_children\'
若要在分类法“taxonomy NAME”上设置为false(请注意,这是一个布尔参数),则应确保按照正确的分类法操作:
add_action( \'pre_get_posts\', \'slug_cpt_category_archives\' );
function slug_cpt_category_archives( $query ) {
if ( is_tax( \'TAXONOMY NAME\' ) ) {
foreach ( $query->tax_query->queries as $i => $tax_query ) {
if ( $tax_query[\'taxonomy\'] === \'TAXONOMY NAME\' ) {
$query->tax_query->queries[$i][\'include_children\'] = false;
// if you want to set \'include_children\' to false for all
// taxonomies than remove following return
return;
}
}
}
}