【问题标题】:Make checkout addresses fields not required in WooCommerce制作 WooCommerce 中不需要的结帐地址字段
【发布时间】:2018-04-30 20:00:43
【问题描述】:

在 Woocommerce 中,我正在尝试使用下面的代码设置不需要的结帐地址字段……但是在提交结帐表单时,我收到了 this error“请输入地址以继续”。

我设置地址的代码不需要结帐字段:

add_filter( 'woocommerce_billing_fields', 'wc_npr_filter_phone', 10, 1 
);
function wc_npr_filter_phone( $address_fields ) {
    $address_fields['billing_phone']['required'] = true;
    $address_fields['billing_country']['required'] = false;
    $address_fields['billing_last_name']['required'] = false;
    $address_fields['billing_city']['required'] = false;
    $address_fields['billing_postcode']['required'] = false;
    $address_fields['billing_email']['required'] = false;
    $address_fields['billing_state']['required'] = false;
    $address_fields['billing_address_1']['required'] = false;
    $address_fields['billing_address_2']['required'] = false;
    return $address_fields;

}

//make shipping fields not required in checkout
add_filter( 'woocommerce_shipping_fields', 
'wc_npr_filter_shipping_fields', 10, 1 );
function wc_npr_filter_shipping_fields( $address_fields ) {
    $address_fields['shipping_first_name']['required'] = false;
    $address_fields['shipping_last_name']['required'] = false;
    $address_fields['shipping_address_1']['required'] = false;
    $address_fields['shipping_address_2']['required'] = false;
    $address_fields['shipping_city']['required'] = false;
    $address_fields['shipping_country']['required'] = false;
    $address_fields['shipping_postcode']['required'] = false;
    $address_fields['shipping_state']['required'] = false;
    return $address_fields;
}

HTML 似乎也不错:

如何在 WooCommerce 中设置不需要的结帐地址字段?

【问题讨论】:

    标签: php wordpress woocommerce checkout hook-woocommerce


    【解决方案1】:

    您应该按照here 的说明使用woocommerce_default_address_fields 过滤器挂钩。

    替换代码:

    // Billing and shipping addresses fields
    add_filter( 'woocommerce_default_address_fields' , 'filter_default_address_fields', 20, 1 );
    function filter_default_address_fields( $address_fields ) {
        // Only on checkout page
        if( ! is_checkout() ) return $address_fields;
    
        // All field keys in this array
        $key_fields = array('country','first_name','last_name','company','address_1','address_2','city','state','postcode');
    
        // Loop through each address fields (billing and shipping)
        foreach( $key_fields as $key_field )
            $address_fields[$key_field]['required'] = false;
    
        return $address_fields;
    }
    

    由于结算电子邮件和电话默认情况下已经是必需的,如果您希望它们不需要,您应该需要以下附加代码:

    // For billing email and phone - Make them not required
    add_filter( 'woocommerce_billing_fields', 'filter_billing_fields', 20, 1 );
    function filter_billing_fields( $billing_fields ) {
        // Only on checkout page
        if( ! is_checkout() ) return $billing_fields;
    
        $billing_fields['billing_phone']['required'] = false;
        $billing_fields['billing_email']['required'] = false;
        return $billing_fields;
    }
    

    所有代码都在您的活动子主题(或活动主题)的 function.php 文件中。经过测试并且可以工作。

    【讨论】:

    • 感谢您的快速响应。提供的代码没有帮助,我仍然收到该错误。这种行为的原因是什么?
    • @ArtemKopytko 像您的主题或某些插件这样的东西可能正在对结帐字段进行自定义……我的答案代码是经典的,并且确实有效。
    • @LoicTheAztec 我已将国家/地区字段设置为必填,但即使未选择国家/地区,表单也会提交,并且也不会显示所需国家/地区的错误消息。
    • @LoicTheAztec 我们也可以让“billing_name”不需要吗?
    【解决方案2】:

    唯一帮助我的是为国家添加一个字段并使其不可见(因为我不需要它)

    【讨论】:

      【解决方案3】:
      add_filter( 'woocommerce_checkout_fields', 'your_require_wc_phone_field');
      function your_require_wc_phone_field( $fields ) {
          $fields['billing']['billing_phone']['required'] = false;
          return $fields;
      }
      

      此方法使用“woocommerce_checkout_fields”,在我自己的网站上进行测试时,这是我可以将 billing_phone 字段更改为问题所需字段的唯一方法。

      https://docs.woocommerce.com/document/tutorial-customising-checkout-fields-using-actions-and-filters/

      【讨论】:

      • 您能否解释一下为什么您的答案优于已接受的答案?您的答案看起来与接受的第二部分非常相似。
      猜你喜欢
      • 1970-01-01
      • 2015-07-09
      • 1970-01-01
      • 1970-01-01
      • 2017-08-31
      • 2018-03-14
      • 2020-01-03
      • 2018-05-31
      • 2021-03-24
      相关资源
      最近更新 更多