如何解决Woocommerce免运费配送方式下Cash On Delivery不显示的问题
WooCommerce免邮模式下货到付款(COD)不显示解决方法
方法1:核对配置匹配规则
- 首先进入WooCommerce > 设置 > 配送页面,检查你配置的Free Shipping配送方式对应的适用区域,需要和Cash On Delivery支付方式设置里的「适用国家/地区」范围完全一致。如果免邮配送仅开放给部分区域、COD的适用范围更小,对应区域下就不会展示COD选项。
- 回到WooCommerce > 设置 > 支付 > Cash On Delivery配置页,确认「启用于配送方式」勾选框里,你所有启用的Free Shipping选项都被选中。部分站点会配置多个不同门槛的免邮方式,需要逐一勾选,你提交的配置界面参考如下:

- 检查是否有配置最小订单金额限制:如果COD设置了最低订单金额要求,而符合免邮门槛的订单金额没达到COD最低要求,也会隐藏COD选项。
方法2:添加代码片段强制兼容
如果上述配置全部正确仍不生效,通常是主题或第三方配送插件的规则冲突导致,可以将以下代码添加到当前主题的functions.php文件,或者用Code Snippets插件插入运行:
add_filter( 'woocommerce_available_payment_gateways', 'enable_cod_for_free_shipping', 99 ); function enable_cod_for_free_shipping( $available_gateways ) { if ( is_admin() ) return $available_gateways; if ( ! WC()->cart ) return $available_gateways; // 获取当前用户选择的配送方式 $chosen_methods = WC()->session->get( 'chosen_shipping_methods' ); $chosen_shipping = $chosen_methods[0] ?? ''; // 检测为免邮配送时强制启用COD if ( str_contains( $chosen_shipping, 'free_shipping' ) && isset( $available_gateways['cod'] ) ) { $available_gateways['cod']->enabled = 'yes'; } return $available_gateways; }
添加后清空站点缓存和购物车缓存,重新下单测试即可生效。
内容的提问来源于stack exchange,提问作者Karthik
相关产品推荐
相关产品推荐

