WooCommerce:将指定产品变体价格替换为Price on request
替换WooCommerce指定产品变体价格为“Price on request”
代码实现
将以下代码添加到你的主题functions.php文件,或通过自定义代码插件(如Code Snippets)导入:
// 定义需要替换价格的变体ID列表 function get_request_price_variation_ids() { return array( 123, 456 ); // 替换为你的目标变体ID } // 替换变体价格的静态显示 add_filter( 'woocommerce_get_price_html', 'replace_variation_price_with_request_text', 10, 2 ); function replace_variation_price_with_request_text( $price, $product ) { // 仅针对变体产品生效 if ( $product->is_type( 'variation' ) ) { $target_variations = get_request_price_variation_ids(); if ( in_array( $product->get_id(), $target_variations ) ) { return '<span class="price">Price on request</span>'; } } return $price; } // 处理变体选择后的动态价格更新 add_action( 'woocommerce_variable_add_to_cart', 'handle_variation_selection_price_update' ); function handle_variation_selection_price_update() { global $product; $default_parent_price = $product->get_price_html(); $target_ids = json_encode( get_request_price_variation_ids() ); wc_enqueue_js( " $(document).on('found_variation', 'form.cart', function( event, variation ) { var targetVariationIds = {$target_ids}; if ( targetVariationIds.includes(variation.variation_id) ) { $('.summary > p.price').html('<span class=\"price\">Price on request</span>'); $('.woocommerce-variation-price').hide(); } else { if(variation.price_html) $('.summary > p.price').html(variation.price_html); $('.woocommerce-variation-price').hide(); } }); $(document).on('hide_variation', 'form.cart', function( event, variation ) { $('.summary > p.price').html('" . addslashes( $default_parent_price ) . "'); }); " ); }
配置说明
- 修改目标变体ID:找到代码里的
get_request_price_variation_ids函数,把数组里的123、456替换成你需要修改的变体ID(可在WooCommerce产品编辑页的“变体”标签下查看每个变体的ID)。 - 效果覆盖:这段代码会处理两种场景:
- 单个变体产品页面的价格直接替换为文本
- 父可变产品页面,选择目标变体后自动更新显示文本,未选择变体时恢复父产品默认价格
内容的提问来源于stack exchange,提问作者Sunday23
相关产品推荐
相关产品推荐

