WooCommerce移除加入购物车按钮失败求助(Newspaper主题)
解决WooCommerce移除加入购物车按钮失效问题
原代码的问题
你写的这段代码有两个关键问题:
- 函数名
WC和WooCommerce内置的全局函数重名,会导致函数执行异常或被覆盖 - 仅定义了函数但未挂载到WordPress钩子上,代码根本没被触发执行
正确的基础修复代码
把下面的代码添加到子主题的functions.php中(别改核心文件,插件更新会覆盖修改):
function remove_add_to_cart_buttons() { // 移除商店循环页面的加入购物车按钮(优先级和原钩子一致) remove_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_add_to_cart', 10 ); // 移除单产品页面的加入购物车按钮(优先级和原钩子一致) remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30 ); } // 挂载到init钩子,确保在WooCommerce加载后执行 add_action( 'init', 'remove_add_to_cart_buttons' );
注意必须带上优先级参数(比如后面的10、30),remove_action需要和原add_action的优先级完全匹配才能生效,这是很多人忽略的点。
Newspaper主题的特殊处理
如果上面的代码还是无效,说明Newspaper主题可能自定义了加入购物车按钮的显示逻辑,没使用WooCommerce默认钩子:
- 找主题专属钩子:打开主题的WooCommerce相关模板文件(比如
woocommerce/loop/add-to-cart.php或主题自带的产品模板),查看主题用什么钩子输出按钮(比如可能是td_wc_after_shop_loop_item这类主题专属钩子),找到后用remove_action移除即可。 - CSS应急隐藏:如果找不到钩子,直接用CSS隐藏按钮,添加到子主题的
style.css或后台自定义CSS里:
/* 隐藏商店循环页面的加入购物车按钮 */ .woocommerce ul.products li.product .add_to_cart_button { display: none !important; } /* 隐藏单产品页面的加入购物车按钮 */ .woocommerce div.product form.cart .single_add_to_cart_button { display: none !important; }
重要提醒
- 绝对不要修改WooCommerce核心文件(比如
WC-template-hooks.php),插件更新会直接覆盖你的修改。 - 所有自定义代码都要放在子主题里,避免主题更新丢失修改。
内容的提问来源于stack exchange,提问作者Manoj Redhu
相关产品推荐
相关产品推荐

