我想做一个WooCommerce邮政编码 checkout 字段,只有当国家不是沙特阿拉伯时才需要.仅当客户 Select 沙特阿拉伯以外的国家/地区时,才需要填写此字段

但它不起作用

function woocommerce_no_postcode(array $fields): array
{
  // bail if the country is not SA
  if (!isset($_POST['billing_country']) || 'SA' === $_POST['billing_country']) {
    return $fields;
  }
  $fields['billing']['postcode']['required'] = true;
  return $fields;
}
add_filter('woocommerce_checkout_fields', 'woocommerce_no_postcode', 10, 1);');

推荐答案

以下代码可以完成此工作,仅当国家/地区不是沙特阿拉伯时才需要WooCommerce邮政编码 checkout 字段:

add_filter( 'woocommerce_get_country_locale', 'custom_country_locale_postcode', 10, 1 );
function custom_country_locale_postcode( $locale ) {
    foreach ( $locale as $country => $data ){
        $locale[$country] = array( 'postcode' => array(
            'required' => true,
        ) );
    }

    $locale['SA'] = array( 'postcode' => array(
        'required' => false,
    ) );

    return $locale;
}

代码位于您的子主题的unctions.php文件中(或在插件中).经过测试,效果良好.

Php相关问答推荐

当我们使用PHPUnit时,控制台中的--uses param到底起了什么作用以及如何使用?

try 修改这个PHP代码如果语句在WordPress""

从WooCommerce邮箱通知中的订单详细信息中删除产品列表

使用WooCommerce本机产品短码时不考虑价格筛选(_SHORT CODE)

在保留唯一键值对的情况下高效合并嵌套数组

在Laravel中,如果我用session—put()存储一些信息,客户端浏览器是否可以使用这些信息?>

获取要删除的图像的公共ID

这是在可召回的背景下吗?

在WordPress中从CPT中删除插件

使用与OpenSSL命令行兼容的AES-256-CTR为大型文件创建php代码OpenSSL加密

是否使用联系人表单7 wpcf7_Feedback_Response输出答复中的html?

在WP工具中页面加载时可短暂看到的JavaScript生成的字段

Symfony:从控制器内部调用自定义命令

奇怪的 preg_match_all() 行为

在 mysql 上的 PDO 中启用自动提交并将自动提交设置为关闭

PHP 在数组中搜索值

根据所选付款方式启用/禁用 WooCommerce 所需的 checkout 字段

提交仅包含活动详细信息选项卡表单的主表单

如何修复正则表达式以在换行符后查找非数值

显示时间范围内的可用空位,同时考虑已预订的空位