如何仅为特定产品覆盖WooCommerce Subscriptions价格字符串
WooCommerce订阅价格字符串修改逻辑限定特定产品实现方案
核心实现逻辑:在原有字段修改逻辑前增加产品匹配判断,非指定产品直接返回原始配置,不执行后续修改,避免影响其他产品的价格显示。
完整可直接使用的代码
add_filter( 'woocommerce_subscriptions_product_price_string_inclusions', 'wpd_override_subscription_price_string', 10, 2 ); function wpd_override_subscription_price_string( $include, $product ) { // 替换括号内的数字为你需要应用逻辑的产品ID,多个ID用英文逗号分隔 $target_product_ids = array( 123, 456 ); // 获取当前产品ID,兼容简单产品、可变产品变体场景 $current_product_id = $product->get_id(); // 若需要可变产品下所有变体都跟随父产品应用规则,取消下一行注释即可 // if ( $product->is_type( 'variation' ) ) $current_product_id = $product->get_parent_id(); // 非目标产品直接返回原始配置,跳过后续修改 if ( ! in_array( $current_product_id, $target_product_ids ) ) { return $include; } /* 可控制的价格字段开关说明: 'tax_calculation' => get_option( 'woocommerce_tax_display_shop' ), 'subscription_price' => true, 'subscription_period' => true, 'subscription_length' => true, 'sign_up_fee' => true, 'trial_length' => true, */ $include['subscription_period'] = false; $include['sign_up_fee'] = false; $include['trial_length'] = false; return $include; }
使用注意事项
- 单产品应用规则时,
$target_product_ids仅填写对应产品ID即可,示例:array( 32 ) - 多产品应用规则时,在数组内追加对应ID,用英文逗号分隔
- 若需要按产品分类、SKU等其他维度判断,只需要替换ID判断部分的逻辑即可,比如获取产品SKU后判断是否在目标SKU列表内
内容的提问来源于stack exchange,提问作者Cristiana Șotëngeanu
相关产品推荐
相关产品推荐

