WooCommerce订单总金额为0美元时显示支票支付选项的代码问题
WooCommerce 零元订单启用支票支付网关代码修正
你之前代码中的set()写法属于语法错误,WooCommerce的可用支付网关参数为关联数组结构,直接给对应索引赋值支票网关实例即可完成启用。以下是可直接使用的完整修正代码:
function payment_gateway_enable_check( $available_gateways ) { // 跳过后台场景,避免影响支付配置页面逻辑 if ( is_admin() ) { return $available_gateways; } $cart_total = (float) WC()->cart->total; // 购物车总金额为0且支票网关未在可用列表时,手动添加 if ( $cart_total === 0 && !isset( $available_gateways['check'] ) ) { $registered_gateways = WC()->payment_gateways()->payment_gateways(); // 仅当后台已启用支票网关时执行添加操作,避免报错 if ( isset( $registered_gateways['check'] ) ) { $available_gateways['check'] = $registered_gateways['check']; } } return $available_gateways; } add_filter( 'woocommerce_available_payment_gateways', 'payment_gateway_enable_check' );
主要优化点
- 替换了废弃的全局
$woocommerce调用,改用WooCommerce官方推荐的WC()辅助函数获取实例,兼容性更强 - 新增后台场景跳过逻辑,不会干扰后台支付配置页面的正常展示
- 增加了网关存在性校验,只有后台已启用支票支付网关时才会执行添加操作,避免出现调用不存在实例的报错
- 对购物车总金额做了浮点型转换,避免因字符串格式的金额数值导致判断失效
注意
使用前请先进入WooCommerce后台「设置」-「支付」页面,确认支票支付网关处于启用状态,否则代码不会生效。
内容的提问来源于stack exchange,提问作者Mitch McCrea
相关产品推荐
相关产品推荐

