Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/234.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php WordPress woocommerce\u get\u country\u locale钩子不工作_Php_Wordpress_Woocommerce_Checkout - Fatal编程技术网

Php WordPress woocommerce\u get\u country\u locale钩子不工作

Php WordPress woocommerce\u get\u country\u locale钩子不工作,php,wordpress,woocommerce,checkout,Php,Wordpress,Woocommerce,Checkout,我试图以多种方式覆盖“woocommerce\u get\u country\u locale”钩子,为什么它的需要意味着什么 我需要删除特定国家/地区的状态字段 下面显示的是我尝试过的 尝试1 function custom_override_locale_setting ( $locale ) { $locale['HK']['state']['hidden'] = true; return $locale; } add_filter('woocommerce_get_count

我试图以多种方式覆盖“woocommerce\u get\u country\u locale”钩子,为什么它的需要意味着什么

我需要删除特定国家/地区的状态字段

下面显示的是我尝试过的

尝试1

function custom_override_locale_setting ( $locale ) {
  $locale['HK']['state']['hidden'] = true;
    return $locale;
}
add_filter('woocommerce_get_country_locale', 'custom_override_locale_setting');
尝试2

 apply_filters( 'woocommerce_get_country_locale', array(
            'HK' => array(
              'postcode' => array(
                'required' => false
              ),
              'city'  => array(
                'label'       => __( 'Town / District', 'woocommerce' ),
                //'placeholder' => __( 'Town / District', 'woocommerce' )
              )
            )
            ));

请给出实现的建议,谢谢。

您可以尝试添加到阵列中:

        'state' => array(
           'required' => false
         )
比如说,在功能上像法国

所以你的过滤器看起来像

    apply_filters( 'woocommerce_get_country_locale', array(
               'HK' => array(
                'postcode' => array(
                  'required' => false
                ),
                'city'  => array(
                'label'       => __( 'Town / District', 'woocommerce' ),
                //'placeholder' => __( 'Town / District', 'woocommerce' )
                )
                'state' => array(
                  'required' => false
                )
            )
        ));
控制这一点的功能存在于

woocommerce/includes/class wc countries.php

它可以在那里删除,但您需要非常小心,以确保在更新WooCommerce时维护它。我不建议以这种方式编辑核心主题文件,但它可以产生所需的结果

这可能有助于为get country locale函数提供良好的背景:

这可能会提供另一种方式,表明如果你想将香港全部清除,该国是不允许的:

此处答案中的某些内容可能有助于为您指出更正确的方法:


这也可以解释一些行为:

当然我没有编辑核心文件,我只是覆盖,现在当添加这个
'state'=>数组('required'=>false)
时,状态被删除了吗?我想当我们给出required时,它的make
required
字段,但是我需要删除特定国家的state字段!恐怕我不知道也不能在这里测试-因为法国没有这样的州,我想它会删除它-state=>array('')工作吗?您可以通过实验或作为最后手段来编辑核心文件。此页面上的最后一个答案似乎解释了状态字段的问题。ialocin的答案可能会有所帮助:代码并非适用于所有情况,因为在国家选择时,签出表单的状态字段会通过javascript更新。为了使其工作,有必要添加这些案例所需的名称作为翻译,使用。。。并提供了一个建议'state'=>array('hidden'=>true)可能是一个愚蠢的想法,请让我知道如果它不好,我可以删除它!看起来它可能有你想要的-Rolf Hassel的回答是“state”=>array('hidden'=>true)在添加到你的过滤器时做了什么?