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

WooCommerce+All Products插件:如何仅禁用Echantillon变体订阅功能?

解决WooCommerce + All Products for Woo Subscriptions禁用指定变体订阅功能的问题

原代码无效的核心原因是使用的钩子woocommerce_subscription_variation_is_purchasable并非All Products for Woo Subscriptions插件的专属控制钩子,无法覆盖插件的订阅逻辑。以下是针对你的需求的有效解决方案:

有效代码实现

add_filter('wcsap_is_subscription_eligible', 'disable_echantillon_variation_subscription', 20, 2);
function disable_echantillon_variation_subscription($eligible, $product) {
    // 仅针对可变产品的变体生效
    if ($product->is_type('variation')) {
        // 获取当前变体的Conditionnement属性值(slug)
        $conditionnement = $product->get_attribute('pa_conditionnement');
        // 判断是否为Echantillon变体,是则禁用订阅资格
        if ($conditionnement === 'echantillon') {
            $eligible = false;
        }
    }
    return $eligible;
}

代码说明

  • 使用wcsap_is_subscription_eligible钩子:这是All Products for Woo Subscriptions插件提供的官方钩子,专门用于控制产品/变体是否允许开启订阅。
  • 直接读取变体属性:无需通过父产品匹配变体ID,直接获取当前变体的pa_conditionnement属性值,逻辑更简洁可靠。
  • 优先级设为20:确保该函数的执行顺序晚于插件默认逻辑,覆盖原有设置。

使用方法

将上述代码添加到你的WordPress主题的functions.php文件中,或通过Code Snippets插件添加并激活即可。

注意:请确认属性slugpa_conditionnement与你后台设置的属性slug一致,若属性slug不同,需同步修改代码中的对应字段。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 08:32:17