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

WooCommerce特定属性值变体隐藏加入购物车按钮问题排查

WooCommerce 变体加入购物车按钮条件禁用修复

原代码的问题在于变量名冲突,导致所有变体的加入购物车按钮都被错误禁用。具体来说,循环里的$term_slug变量覆盖了外部定义的目标slug值yes,使得判断条件永远为真,所有变体都被标记为不可购买。

修正后的代码

add_filter( 'woocommerce_variation_is_purchasable', 'conditional_variation_is_purchasable', 20, 2 );
function conditional_variation_is_purchasable( $purchasable, $product ) {
    // 配置项
    $target_taxonomy = 'pa_badge-print';
    $target_slug = 'yes';

    // 获取当前变体的属性数据
    $variation_attributes = $product->get_variation_attributes();
    
    // 检查当前变体是否包含目标属性
    foreach ( $variation_attributes as $attr_key => $current_slug ) {
        // 提取属性分类名
        $taxonomy = str_replace('attribute_', '', $attr_key);
        
        // 只针对目标分类进行判断
        if ( $taxonomy === $target_taxonomy && $current_slug === $target_slug ) {
            $purchasable = false; // 禁用加入购物车按钮
            break;
        }
    }

    return $purchasable;
}

关键修改点

  • 重命名循环变量为$current_slug,避免覆盖外部的目标slug值
  • 增加分类匹配判断,只检查pa_badge-print属性,提升代码效率
  • 直接对比属性slug,无需额外获取term对象,简化逻辑

将上述代码添加到你的主题functions.php文件或自定义插件中即可生效:当选择pa_badge-print属性下slug为yes的变体时,加入购物车按钮会被禁用;选择其他属性值时,按钮正常显示。

内容的提问来源于stack exchange,提问作者Lee John Thomson

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 09:42:51