【问题标题】:WooCommerce Checkout required fields issue with billing city fieldWooCommerce Checkout 必填字段与计费城市字段有关
【发布时间】:2018-01-30 09:30:18
【问题描述】:

喂。

我有一家 woocommerce 商店。最近我遇到了在结帐帐单中填写必填字段的问题。

我已经完成了这个定制:

'city' => array(
    'label'        => __( 'City Name', 'woocommerce' ),
    'placeholder'  => __( 'City Name'),
    'required'     => true,
    'class'        => array( 'form-row-wide', 'address-field',     'validate-required' ),
    'validate'     => array( 'city' ),
    'autocomplete' => 'address-level2',
    'priority'     => 70,
),

在 woocommerce/includes/class-wc-countries.php 路径中, 如您所见:

'required'     => true,

但没有显示星号 (*) 或<abbr> html 标记已添加到我的表单中。

对上述问题有任何想法吗?

问候。

【问题讨论】:

  • 是优先级冲突吗?尝试将 70 更改为 71。

标签: php wordpress forms woocommerce checkout


【解决方案1】:

没有任何保证,因为它可能依赖于许多东西,例如您的主题、第三方插件或自定义......

官方文档:Customizing checkout fields using actions and filters

您应该只覆盖必要的属性,而不是编辑此“城市”结帐字段的所有属性。

例如,您不需要在 class 属性中添加'address-field''validate-required',因为它们是自动添加的。此外,此计费字段的优先级已经是 70...

所以你应该尽量只保留你需要更改的属性:

add_filter( 'woocommerce_default_address_fields' , 'custom_override_default_address_fields', 100, 1 );
function custom_override_default_address_fields( $address_fields ) {

    $address_fields['city']['label']        = __( 'City Name', 'woocommerce' );
    $address_fields['city']['placeholder']  = __( 'City Name');
    $address_fields['city']['required']     = true;

    return $address_fields;
} 

代码进入您的活动子主题(或主题)的 function.php 文件或任何插件文件中。

经过测试的代码在 WooCommerce 中运行。

此代码将以这种方式制作城市计费字段:

【讨论】:

  • 非常感谢。它很棒。
  • @LoicTheAztec,在我的站点标签和占位符处已更改,但所需功能未更改。仍然显示可选。如何解决?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-05-21
  • 2016-10-09
  • 1970-01-01
  • 1970-01-01
  • 2016-07-15
  • 2017-02-16
  • 2021-08-26
相关资源
最近更新 更多