You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何移除WooCommerce小部件内的价格?求相关钩子使用指引

解决WooCommerce小部件中价格无法隐藏的问题

嘿,我懂你现在的困扰——已经成功把分类页的价格去掉了,但那些热门推荐、畅销品这类小部件里的价格还赖着不走对吧?其实问题出在小部件的产品循环用的是和分类页不同的钩子,之前的代码只针对了分类页的主循环,所以没覆盖到小部件。

给你几个靠谱的解决方案,一步步来:

1. 一次性移除所有循环(分类页+小部件)的价格

把这段代码加到你主题的functions.php文件里,或者用自定义代码插件(比如Code Snippets)来添加,就能同时搞定分类页和小部件的价格:

add_action( 'init', 'remove_all_woocommerce_loop_prices' );
function remove_all_woocommerce_loop_prices() {
    // 移除主shop循环(分类页、商店首页)的价格
    remove_action( 'woocommerce_after_shop_loop_item_title', 'woocommerce_template_loop_price', 10 );
    
    // 专门针对产品小部件的价格移除
    remove_action( 'woocommerce_widget_product_item_end', 'woocommerce_template_loop_price', 10 );
    
    // 额外保险:如果主题/插件修改了价格的优先级,尝试移除15优先级的(按需调整)
    remove_action( 'woocommerce_after_shop_loop_item_title', 'woocommerce_template_loop_price', 15 );
}

2. 只移除小部件里的价格(保留分类页价格)

如果你只想隐藏小部件的价格,分类页的保留,那只需要保留这段代码:

add_action( 'init', 'remove_widget_product_prices' );
function remove_widget_product_prices() {
    remove_action( 'woocommerce_widget_product_item_end', 'woocommerce_template_loop_price', 10 );
}

3. 调试钩子(如果上面的方法没生效)

要是某些自定义小部件还是显示价格,可能是它们用了特殊的钩子。你可以用这段调试代码,看看价格到底挂在哪个钩子上:

add_action( 'woocommerce_widget_product_item_end', 'debug_widget_price_hooks', 5 );
function debug_widget_price_hooks() {
    global $wp_filter;
    echo '<pre>';
    // 输出当前小部件产品项末尾的所有钩子动作
    print_r( $wp_filter['woocommerce_widget_product_item_end'] );
    echo '</pre>';
}

添加后刷新页面,小部件里会显示一堆代码,你找有没有woocommerce_template_loop_price的条目,记下它的优先级,然后用对应的remove_action移除就行(比如优先级是20,就把代码里的10改成20)。

调试完记得把这段代码删掉哦,不然会影响页面美观~

内容的提问来源于stack exchange,提问作者Adrian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 08:36:14