如何在WooCommerce单个产品页面将价格移至短描述下方?
解决WooCommerce单个产品页面价格重复显示的问题
嘿,这个问题我碰到过好多次,核心原因其实是你移除价格时用错了优先级,再加上Movedo主题的自定义逻辑影响,才导致价格显示两次的。
为什么会出现重复?
- 原生WooCommerce里,
woocommerce_template_single_price在woocommerce_single_product_summary钩子上的默认优先级是10,但你写的remove_action用了优先级4——等于根本没移除掉原来的价格输出! - 之后你又用
add_action添加了一个优先级29的价格,所以页面上就同时存在原生(优先级10)和你新增(优先级29)的两个价格了。
一步步修正方案
1. 先修正基础代码(解决优先级错误)
把你子主题functions.php里的代码替换成下面的,确保正确移除原生价格:
// 移除原生WooCommerce的产品价格(注意优先级是10,这是官方默认值) remove_action('woocommerce_single_product_summary', 'woocommerce_template_single_price', 10); // 在短描述下方添加价格(短描述默认优先级是20,29会确保在它之后显示) add_action('woocommerce_single_product_summary', 'woocommerce_template_single_price', 29);
2. 如果还是重复?检查主题自定义钩子
Movedo主题可能已经自定义了产品价格的输出逻辑,比如用了自己的函数来渲染价格。这时候需要额外移除主题添加的价格:
- 打开Movedo主题的
functions.php或者woocommerce/single-product.php文件,搜索woocommerce_single_product_summary相关的价格动作,大概率会看到类似这样的代码:add_action('woocommerce_single_product_summary', 'greatives_movedo_single_product_price', 10); - 把这个主题自定义的价格动作也移除,更新你的子主题代码:
// 移除原生价格 remove_action('woocommerce_single_product_summary', 'woocommerce_template_single_price', 10); // 移除Movedo主题自定义的价格(根据你找到的函数名和优先级修改) remove_action('woocommerce_single_product_summary', 'greatives_movedo_single_product_price', 10); // 重新添加价格到短描述下方 add_action('woocommerce_single_product_summary', 'woocommerce_template_single_price', 29);
验证小技巧
先把你子主题里的价格相关代码注释掉,刷新产品页面:如果这时候价格还在原来的位置,说明主题确实自定义了价格输出,必须找到对应的函数移除才行。
内容的提问来源于stack exchange,提问作者user11158581
相关产品推荐
相关产品推荐

