WooCommerce:购物车金额低于20美元时移除PayPal Express按钮
解决购物车金额低于20美元时移除PayPal Express Checkout按钮的问题
你之前尝试的remove_action无效,核心原因是PayPal按钮的挂载钩子、回调函数名或优先级和你写的不匹配——不同PayPal插件的实现逻辑有差异,下面分常见场景给出可行方案:
场景1:使用官方WooCommerce PayPal Payments插件
该插件的购物车PayPal按钮通过类方法挂载,而非简单的函数名,代码如下:
function disable_checkout_and_paypal_buttons() { $minimum = 20; $total = WC()->cart->cart_contents_total; if ( $total < $minimum ) { // 移除默认结账按钮 remove_action( 'woocommerce_proceed_to_checkout', 'woocommerce_button_proceed_to_checkout', 20 ); // 移除PayPal Payments插件的购物车按钮 global $woocommerce_paypal_payments; if ( isset( $woocommerce_paypal_payments ) ) { remove_action( 'woocommerce_proceed_to_checkout', array( $woocommerce_paypal_payments, 'render_cart_button' ), 10 ); } } } // 晚于插件挂载时机执行,设置更高优先级 add_action( 'woocommerce_proceed_to_checkout', 'disable_checkout_and_paypal_buttons', 20 );
场景2:使用老版WooCommerce PayPal Express Checkout插件
老版本插件的按钮通常挂载在woocommerce_proceed_to_checkout或woocommerce_cart_actions钩子,回调函数为wc_paypal_express_checkout_cart_button,代码如下:
function disable_checkout_and_paypal_buttons() { $minimum = 20; $total = WC()->cart->cart_contents_total; if ( $total < $minimum ) { // 移除默认结账按钮 remove_action( 'woocommerce_proceed_to_checkout', 'woocommerce_button_proceed_to_checkout', 20 ); // 移除老版PayPal Express按钮 remove_action( 'woocommerce_proceed_to_checkout', 'wc_paypal_express_checkout_cart_button', 20 ); // 若上面无效,尝试这个钩子 remove_action( 'woocommerce_cart_actions', 'wc_paypal_express_checkout_cart_button', 20 ); } } // 确保优先级高于插件的挂载优先级 add_action( 'woocommerce_proceed_to_checkout', 'disable_checkout_and_paypal_buttons', 25 );
通用排查技巧
如果以上方案都不生效,可自行定位按钮的挂载逻辑:
- 右键检查购物车页面的PayPal按钮,找到它的专属HTML类名(如
paypal-button-container) - 在主题/插件代码中搜索该类名,找到输出按钮的函数
- 查看该函数对应的
add_action钩子和优先级,再用对应的remove_action移除
将上述代码添加到主题的functions.php文件或自定义插件中即可生效。
内容的提问来源于stack exchange,提问作者Cray
相关产品推荐
相关产品推荐

