【问题标题】:WordPress woocommerce_get_country_locale hook not workingWordPress woocommerce_get_country_locale 钩子不起作用
【发布时间】:2015-11-24 10:52:11
【问题描述】:

我正在尝试以多种方式覆盖“woocommerce_get_country_locale”钩子,为什么它需要意味着?

我需要删除特定国家/地区的 state 字段!

下面显示的是我尝试过的?

尝试 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' )
              )
            )
            ));

请给出实现建议,谢谢。

【问题讨论】:

  • wordpress.org/support/topic/… 看起来可能有你想要的 - Rolf Hassel 的回答
  • 'state'=>array('hidden' =>true) 添加到您的过滤器时是否做了任何事情?

标签: php wordpress woocommerce checkout


【解决方案1】:

您可以尝试添加到您的数组中:

        'state' => array(
           'required' => false
         )

以函数中的 France 为例。

所以你的过滤器看起来像

    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 时保持它。我不建议以这种方式编辑核心主题文件,但它可以产生所需的结果。

这可能有助于为获取国家/地区语言环境功能提供良好的背景: http://woocommerce.wp-a2z.org/oik_api/wc_countriesget_country_locale/?bwscid1=2

这可能会提供另一种方式 - 如果您想完全删除 HK,则表明该国家/地区是不允许的: http://woocommerce.wp-a2z.org/oik_api/wc_countriesget_allowed_countries/

此处答案中的某些内容可能有助于为您指出更正确的方法: https://wordpress.stackexchange.com/questions/73062/how-to-force-wordpress-to-temporarily-switch-locale-using-qtranslate

这也可以解释一些行为:https://wordpress.stackexchange.com/questions/120741/cant-change-a-label-in-woocommerce-with-the-normal-filter

【讨论】:

  • off-course我没有编辑核心文件,我只是覆盖,现在添加这个'state' => array( 'required' => false )时,状态被删除了吗?
  • 我认为当我们提供 required 时,它会生成 required 字段,但我需要删除特定国家/地区的 state 字段!
  • 恐怕我不知道也不能在这里测试 - 由于法国没有这样的州,我认为它会删除它 - 'state' => array('' ) 工作?您可以实验性地编辑核心文件 - 或作为最后的手段。
  • 此页面上的最后一个答案似乎解释了状态字段的问题 ialocin 的答案可能会有所帮助:wordpress.stackexchange.com/questions/120741/… 说:代码不适用于所有情况,因为在国家/地区选择时结帐的状态字段表单通过 javascript 更新。为了使其工作,有必要为这些案例添加所需的名称作为翻译,使用...并提供建议
  • 'state' => array( 'hidden' => true ) 可能是个愚蠢的想法,如果不好请告诉我,以便我删除它!
猜你喜欢
  • 1970-01-01
  • 2014-05-22
  • 2013-05-27
  • 1970-01-01
  • 1970-01-01
  • 2011-10-10
  • 1970-01-01
  • 2011-02-19
  • 1970-01-01
相关资源
最近更新 更多