在 Woocommerce 中不需要结帐运输邮政编码字段

Make checkout shipping postcode field not required in Woocommerce

所以我按照以下说明进行操作:Link 更改 post 代码的必填字段。

add_filter( 'woocommerce_billing_fields', 'wc_optional_billing_fields' );
function wc_optional_billing_fields( $address_fields ) {
    $address_fields['shipping_postcode']['required'] = false;

    return $address_fields;
}

不幸的是,它没有更改必填项,而是创建了第二个字段: Image

谁能指出这里的问题是什么?

That happens because you are using woocommerce_billing_fields hook filter that is managing only billing fields for a shipping postcode field…

您可以尝试使用 woocommerce_shipping_fields 过滤器挂钩,但它不会起作用,因为 邮政编码 结帐字段是一个非常特殊的字段 只能使用以下挂钩函数设置为不需要:

add_filter( 'woocommerce_default_address_fields', 'customise_postcode_fields' );
function customise_postcode_fields( $address_fields ) {
    $address_fields['postcode']['required'] = false;

    return $address_fields;
}

正如您所见,它作用于 帐单和送货邮政编码 字段。显然不可能将其仅用于发货邮政编码字段,同时用于账单和发货字段。

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