尝试在我的 WordPress 子主题中包含一些新功能来编辑 woocommerce 产品页面。然而我碰壁了,下面的代码抛出了以下错误
syntax error, unexpected ''taxonomy'' (T_CONSTANT_ENCAPSED_STRING), expecting ')'
这是代码:
add_action( 'pre_get_posts', 'hide_specific_categories' );
function hide_specific_categories( $query ) {
$args = array(
'taxonomy' => 'product_cat',
'field' => 'slug',
'terms' => array( 'atelier' ),
'operator' => 'NOT IN'
);
if ( !is_admin() && $query->is_main_query() && (is_shop() || is_product_category() || is_search()) ) {
$query->set('tax_query', $query->get( 'tax_query', array( $args )));
}
}
不,我尝试了各种调试方法,但看起来这个代码片段在“分类法”上失败了。
请帮忙。
tax_query
是数组的数组。$query->get( 'tax_query', array( $args ))
,因为您直接设置新的分类查询,而是可以使用 $query->set( 'tax_query', array( $args ));
来简化代码。!is_admin() && $query->is_main_query()
放置得很好,但您可以在检查条件后定义$args
以使代码更具可读性。更新脚本-
add_action( 'pre_get_posts', 'hide_specific_categories' );
function hide_specific_categories( $query ) {
if ( !is_admin() && $query->is_main_query() && ( is_shop() || is_product_category() || is_search() ) ) {
$args = array(
array(
'taxonomy' => 'product_cat',
'field' => 'slug',
'terms' => array( 'atelier' ),
'operator' => 'NOT IN'
)
);
// Set the tax_query parameter with arguments
$query->set( 'tax_query', $args );
}
}