You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WooCommerce分类与子分类价格调整求助:适配现有代码至子分类

解决WooCommerce产品子分类价格调整问题

嘿,我明白你现在的需求——这段代码能给指定分类的产品加价,但子分类里的产品没生效对吧?别担心,咱们改一下就行。

问题根源

原代码里的has_term()函数默认只检查产品直接归属的分类,不会自动包含子分类。所以要让它覆盖子分类,只需要调整这个函数的参数就行。

修改后的代码

// 简单产品、分组产品和外部产品
add_filter('woocommerce_product_get_price', 'conditional_custom_price', 99, 2 );
add_filter('woocommerce_product_get_regular_price', 'conditional_custom_price', 99, 2 );
// 可变产品
add_filter('woocommerce_product_variation_get_regular_price', 'conditional_custom_price', 99, 2 );
add_filter('woocommerce_product_variation_get_price', 'conditional_custom_price', 99, 2 );

function conditional_custom_price( $price, $product ) {
    global $post;
    
    // 关键修改:添加第四个参数true,让has_term包含子分类
    if( has_term( 'test', 'product_cat', $post->ID, true )){
        // 删除产品缓存价格(如有需要可取消注释)
        // wc_delete_product_transients($product->get_id());
        $price = $price * 2.1;
    }
    return $price;
}

关键说明

  • 我给has_term()添加了第四个参数true,这个参数控制是否检查子分类,设置为true后,只要产品属于test分类或者它的任何子分类,就会触发价格调整。
  • 如果你的子分类层级比较深,这个方法依然有效,因为它会递归检查所有父分类关系。
  • 要是你需要同时针对多个分类生效,把第一个参数改成数组就行,比如has_term( array('test', 'another-category'), 'product_cat', $post->ID, true )

这样修改后,子分类里的产品也会自动应用2.1倍的价格调整啦!

内容的提问来源于stack exchange,提问作者Erik Duits

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 16:27:45