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

如何在Woocommerce结账页禁用非洲国家的邮政编码/邮编必填项

问题根因
  • 字段选择器不匹配:WooCommerce默认结账页账单邮编字段ID为#billing_postcode,邮寄邮编ID为#shipping_postcode,你使用的#postalCode仅适配了部分主题对尼日利亚、安哥拉的特殊字段配置,喀麦隆、加纳等国家加载的默认字段无法命中该选择器,修改不生效
  • 校验逻辑不完整:仅修改DOM的required属性无法绕过WooCommerce自带的前端表单校验规则、后端提交校验,后续提交还是会触发必填报错
  • 未适配表单重载逻辑:国家切换时WooCommerce会自动重载字段配置,你修改的属性会被默认配置覆盖
完整修复代码

将以下代码添加到当前主题的functions.php文件末尾即可:

<?php
// 前端修改邮编必填逻辑
add_action( 'wp_footer', function () { 
    // 仅在结账页加载脚本
    if ( ! is_checkout() ) return;
?>
<script>
jQuery(function($){
    // 非洲国家ISO编码列表
    const africanCountries = ['DZ','AO','BJ','BW','BF','BI','CM','CV','CF','TD','KM','CG','CD','DJ','EG','GQ','ER','ET','GA','GM','GH','GN','GW','CI','KE','LS','LR','LY','MG','MW','ML','MR','MU','MA','MZ','NA','NE','NG','RW','SN','SC','SL','SO','ZA','SS','SD','SZ','TZ','TG','TN','UG','ZM','ZW'];
    
    // 切换国家时修改校验规则
    function togglePostcodeRequired() {
        const selectedCountry = $('select[name="billing_country"]').val();
        const isAfrican = africanCountries.includes(selectedCountry);
        
        // 修改账单邮编
        $('#billing_postcode').prop('required', !isAfrican);
        // 修改邮寄邮编
        $('#shipping_postcode').prop('required', !isAfrican);
        
        // 移除WooCommerce自带的校验规则
        if (isAfrican) {
            $('#billing_postcode').removeClass('validate-required').parent().removeClass('validate-required');
            $('#shipping_postcode').removeClass('validate-required').parent().removeClass('validate-required');
        } else {
            $('#billing_postcode').addClass('validate-required').parent().addClass('validate-required');
            $('#shipping_postcode').addClass('validate-required').parent().addClass('validate-required');
        }
    }

    // 页面加载初始化执行一次
    togglePostcodeRequired();
    // 国家切换时执行
    $(document.body).on('change', 'select[name="billing_country"], select[name="shipping_country"]', togglePostcodeRequired);
    // 结账表单更新后重新执行,避免被重载覆盖
    $(document.body).on('updated_checkout', togglePostcodeRequired);
});
</script>
<?php 
} );

// 后端关闭非洲国家的邮编必填校验
add_filter( 'woocommerce_default_address_fields', function ( $fields ) {
    if ( ! is_checkout() ) return $fields;
    
    $user_country = WC()->customer->get_billing_country();
    $africanCountries = ['DZ','AO','BJ','BW','BF','BI','CM','CV','CF','TD','KM','CG','CD','DJ','EG','GQ','ER','ET','GA','GM','GH','GN','GW','CI','KE','LS','LR','LY','MG','MW','ML','MR','MU','MA','MZ','NA','NE','NG','RW','SN','SC','SL','SO','ZA','SS','SD','SZ','TZ','TG','TN','UG','ZM','ZW'];
    
    if ( in_array( $user_country, $africanCountries ) ) {
        $fields['postcode']['required'] = false;
    }
    return $fields;
} );
测试说明

添加代码后清空站点缓存、浏览器缓存,再切换喀麦隆、加纳等国家测试,邮编字段的必填星标会消失,提交订单时也不会触发邮编必填报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 01:00:01