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 } }
关键说明
$product->get_id():用来获取当前产品的ID,确保和你指定的ID匹配in_array()函数:检查当前产品ID是否在目标数组里,前面加!表示「不在的话就退出」- 记得确认你填写的产品ID是正确的,比如可以在WordPress后台产品编辑页面的地址栏里找到产品ID
内容的提问来源于stack exchange,提问作者Miguel Gomes
相关产品推荐
相关产品推荐

