求助:WooCommerce自定义变体价格在商品目录失效
解决WooCommerce可变产品目录页显示价格区间问题
你之前的代码仅针对单个产品页面的可变产品价格做了处理,而商品目录页的可变产品价格渲染逻辑在WooCommerce 8.6.1中是通过另一个钩子实现的,所以导致目录页仍显示价格区间。
替换原有代码为以下内容,即可同时覆盖单个产品页和目录页的可变产品价格显示,只展示最高价格:
// 统一处理可变产品的最高价格显示(单个产品页+目录页) add_filter('woocommerce_variable_price_html', 'custom_variable_product_max_price', 10, 2); add_filter('woocommerce_get_price_html', 'custom_variable_product_max_price', 10, 2); function custom_variable_product_max_price($price, $product) { // 仅对可变产品生效 if ($product->is_type('variable')) { // 获取可变产品的最高价格,第二个参数true表示含税,false为不含税,可根据店铺设置调整 $max_price = $product->get_variation_price('max', true); return wc_price($max_price); } // 非可变产品保留原有价格格式 return $price; }
代码说明
- 同时挂钩
woocommerce_variable_price_html和woocommerce_get_price_html两个钩子,确保所有页面的可变产品价格都被处理 - 增加产品类型判断,避免干扰简单产品、分组产品等其他类型商品的价格显示
get_variation_price的第二个参数可根据你的店铺税设置调整,确保价格显示符合需求
替换代码后,刷新商品目录页和单个产品页,即可看到可变产品均只显示最高价格。
内容的提问来源于stack exchange,提问作者kovacsv
相关产品推荐
相关产品推荐

