求助:WooCommerce可变商品价格禁用代码无效(Saha主题)
解决WooCommerce可变商品价格无法隐藏的问题
你遇到的情况大概率是因为Saha主题的钩子优先级更高,或者主题自定义了价格渲染模板,绕过了WooCommerce默认的钩子逻辑。我给你几个针对性的解决方案:
1. 提升钩子优先级并覆盖更多拦截点
默认钩子优先级是10,很多主题会用更高数值的优先级来覆盖默认输出。你可以把优先级调到99(或更高),同时增加一个更通用的钩子woocommerce_get_price_html,确保能拦截到所有价格输出场景:
// 完全隐藏可变商品的价格区间 add_filter( 'woocommerce_variable_sale_price_html','my_remove_variation_price', 99, 2 ); add_filter( 'woocommerce_variable_price_html', 'my_remove_variation_price', 99, 2 ); add_filter( 'woocommerce_get_price_html', 'my_remove_variation_price', 99, 2 ); function my_remove_variation_price( $price, $product ) { // 仅针对可变商品生效,不影响简单商品等其他类型 if ( $product->is_type('variable') ) { $price = ''; } return $price; }
把这段代码替换你原来的内容,加到子主题的functions.php里(一定要用子主题,避免主题更新后修改丢失)。
2. 检查主题自定义的WooCommerce模板
如果上面的代码还是无效,那很可能Saha主题重载了WooCommerce的价格模板。你需要去主题目录下找这两个文件:
woocommerce/single-product/price.phpwoocommerce/single-product/add-to-cart/variable.php
打开文件后,找到判断可变商品价格的代码块,比如类似这样的内容:
if ( $product->is_type('variable') ) { echo wc_get_price_html( $product ); }
把这段代码注释掉或者直接删除,就能彻底隐藏价格了。
3. 额外处理商品列表页(可选)
如果你还想在店铺存档页、分类页也隐藏可变商品的价格,可以再加一段代码:
add_filter( 'woocommerce_loop_price', 'my_remove_loop_variation_price', 99, 2 ); function my_remove_loop_variation_price( $price, $product ) { if ( $product->is_type('variable') ) { $price = ''; } return $price; }
按照这个步骤试下来,应该就能解决你的问题了。
内容的提问来源于stack exchange,提问作者Koloss
相关产品推荐
相关产品推荐

