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

WooCommerce自定义可变价格切换代码如何仅作用于指定产品?

解决WooCommerce可变价格代码仅应用于特定产品的问题

嘿,我来帮你搞定这个小问题!你之前的思路方向是对的,但少了关键的判断逻辑,所以代码没按预期只作用在指定产品上。

问题原因

你只是定义了目标产品ID的数组,但没有添加「如果当前产品不在这个数组里就跳过后续代码」的判断,所以那段价格替换的逻辑还是会对所有可变产品生效。

修改后的完整代码

把原来的代码改成这样,就能精准作用在你指定的两个产品上了:

add_action( 'woocommerce_single_product_summary', 'replace_variable_price_range_by_chosen_variation_price', 10 );
function replace_variable_price_range_by_chosen_variation_price() {
    global $product;

    // 先判断当前产品是可变类型
    if ( $product->is_type( 'variable' ) ) {
        // 这里放你要指定的产品ID
        $target_product_ids = array( 375, 39 );
        
        // 核心判断:如果当前产品ID不在目标数组里,直接退出函数,不执行后续代码
        if ( !in_array( $product->get_id(), $target_product_ids ) ) {
            return;
        }

        // 下面是你获取的原有功能代码
        ?>
        <script>
        jQuery(function($){
            var price = $('.woocommerce-variation-price .price'),
                originalPrice = $('.woocommerce-variable-price .price').html(),
                variationPrice = $('form.variations_form').find('.woocommerce-variation-price .price');

            $('form.variations_form').on('show_variation', function(event, data) {
                if ( data.price_html ) {
                    price.html(data.price_html);
                }
            });

            $('form.variations_form').on('hide_variation', function() {
                price.html(originalPrice);
            });
        });
        </script>
        <?php
    }
}

关键说明

  1. $product->get_id():用来获取当前产品的ID,确保和你指定的ID匹配
  2. in_array()函数:检查当前产品ID是否在目标数组里,前面加!表示「不在的话就退出」
  3. 记得确认你填写的产品ID是正确的,比如可以在WordPress后台产品编辑页面的地址栏里找到产品ID

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 10:22:31