Wordpress 抛出语法错误,意外的“分类法”(T_CONSTANT_ENCAPSED_STRING),期待“)”

问题描述 投票:0回答:1

尝试在我的 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 )));
    }
}

不,我尝试了各种调试方法,但看起来这个代码片段在“分类法”上失败了。

请帮忙。

php wordpress woocommerce product taxonomy
1个回答
0
投票
  1. WooCommerce 期望
    tax_query
    是数组的数组。
  2. 这里不需要调用
    $query->get( 'tax_query', array( $args ))
    ,因为您直接设置新的分类查询,而是可以使用
    $query->set( 'tax_query', array( $args ));
    来简化代码。
  3. 虽然条件检查
    !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 );
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.