WooCommerce有4個(gè)不同的過濾器掛鉤,可以管理地址字段,讓我們弄清楚何時(shí)以及如何使用它們。
在創(chuàng)建教程之前,我嘗試過使用Google進(jìn)行搜索,并在WooCommerce中找到了關(guān)于計(jì)費(fèi)和運(yùn)送字段的太多奇怪信息。現(xiàn)在讓我們對(duì)此有所了解!
WooCommerce中有兩種類型的字段-計(jì)費(fèi)和運(yùn)送字段。在這兩個(gè)類別中都顯示了某些字段,例如名字字段或國(guó)家/地區(qū)字段。
現(xiàn)在仔細(xì)閱讀:
- 我們可以使用
woocommerce_default_address_fields?鉤子在字段中進(jìn)行更改-在這種情況下,更改將影響所有內(nèi)容-修改“我的賬戶”中的賬單和運(yùn)送字段頁(yè)面以及結(jié)賬頁(yè)面。 woocommerce_shipping_fields?–相同,但僅影響運(yùn)送字段woocommerce_billing_fields?–相同,但僅影響計(jì)費(fèi)字段woocommerce_checkout_fields–僅影響界面頁(yè)面,沒有其他影響,此鉤子已在單獨(dú)的教程中詳細(xì)介紹。
刪除默認(rèn)的計(jì)費(fèi)和運(yùn)送字段
一個(gè)簡(jiǎn)單的示例如下:
add_filter( 'woocommerce_default_address_fields', 'misha_remove_fields' );
function misha_remove_fields( $fields ) {
unset( $fields[ 'address_2' ] );
return $fields;
}
字段ID為:
first_name,last_name,company,address_1,address_2,state,city,country,postcode
請(qǐng)注意,如果您使用的是woocommerce_shipping_fields?或woocommerce_billing_fields?過濾器掛鉤,則必須在字段ID中添加適當(dāng)?shù)那熬Y(billing_或shipping_),例如:
add_filter( 'woocommerce_billing_fields', 'misha_remove_billing_fields' );
function misha_remove_billing_fields( $fields ) {
unset( $fields[ 'billing_address_2' ] ); // or shipping_address_2 for woocommerce_shipping_fields hook
return $fields;
}
禁用字段驗(yàn)證
在這種情況下,您不必刪除整個(gè)字段本身,而只需刪除它的某個(gè)屬性(required)。
使運(yùn)送姓氏字段為可選的示例:
add_filter( 'woocommerce_shipping_fields', 'misha_remove_fields' );
function misha_remove_fields( $fields ) {
unset( $fields[ 'shipping_last_name' ]['required'] );
return $fields;
}
結(jié)果如下所示:

如果要將“姓氏”字段設(shè)置為“賬單”和“運(yùn)送”字段組都是可選的,也可以使用 woocommerce_default_address_fields 。
另一方面,如果您想將字段設(shè)置為必填,只需在上面代碼的第5行將required屬性設(shè)置為true,如下所示:
$fields[ 'shipping_company' ]['required'] = true;
如何更改默認(rèn)地址字段?
在前面的示例中,我已經(jīng)說明了如何使任何默認(rèn)字段為可選或必需。但這required不是我們可以更改的唯一字段參數(shù)。以下是其他參數(shù):
label?(字符串)placeholder?(字符串)class?(數(shù)組)priority?(整數(shù))
這些參數(shù)均可以更改。作為示例,讓我們嘗試在“賬單”和“運(yùn)送”的“姓氏”字段中進(jìn)行更改:
add_filter( 'woocommerce_default_address_fields' , 'misha_change_fname_field' );
function misha_change_fname_field( $fields ) {
$fields['first_name']['label'] = 'Name';
$fields['first_name']['placeholder'] = 'Your mom calls you';
return $fields;
}
結(jié)果如下:

您可以在我的有關(guān)WooCommerce?結(jié)帳字段的教程中找到更多示例。是的,我們?cè)?code>woocommerce_checkout_fields那里使用動(dòng)作掛鉤,但這非常相似。
創(chuàng)建自定義地址字段
創(chuàng)建地址字段比為“編輯帳戶”頁(yè)面或“結(jié)賬”頁(yè)面創(chuàng)建字段容易得多。
您甚至不必使用woocommerce_form_field()函數(shù)!
真的,這就是關(guān)于數(shù)組的全部工作:
add_filter( 'woocommerce_default_address_fields', 'misha_add_field' );
function misha_add_field( $fields ) {
$fields['fav_color'] = array(
'label' => 'Favorite color',
'required' => true,
'class' => array( 'form-row-wide', 'my-custom-class' ),
'priority' => 20,
'placeholder' => 'Is it black or orange or maybe green?',
);
return $fields;
}
請(qǐng)記住以下幾點(diǎn):
如果要使用woocommerce_shipping_fields或使用woocommerce_billing_fields鉤子,請(qǐng)不要忘記在上面代碼的第5行添加字段前綴shipping_或billing_。我認(rèn)為即使此處沒有前綴也可以解決問題,但是添加前綴可以更加保險(xiǎn)和精準(zhǔn)。
$fields['billing_fav_color'] = array(
您可能會(huì)猜想,這也是如何將字段存儲(chǔ)在wp_usermeta表的數(shù)據(jù)庫(kù)中的元鍵。
關(guān)于CSS類的幾句話:
form-row-wide?–全寬列,form-row-first?– 2列字段,第一列,form-row-last?– 2列字段,第二列;
您可以自己使用 priority參數(shù),例如,我設(shè)置了20,將我的字段放在“名”和“姓”字段下:

很酷的是,它將在WooCommerce結(jié)賬頁(yè)面上顯示并且也將完全起作用!
如何將字段添加到WP后臺(tái)個(gè)人資料編輯頁(yè)面?
好的,我們的字段現(xiàn)在顯示在“我的賬戶”中的“編輯地址”頁(yè)面和“結(jié)賬”頁(yè)面中。但是WordPres后臺(tái)呢?如果該字段也出現(xiàn)在“編輯個(gè)人資料”頁(yè)面中,那就太好了,您不這樣認(rèn)為嗎?這是我的意思:

好消息是,你不必使用show_user_profile和edit_user_profile掛鉤!
有一個(gè)特殊的鉤子:
add_filter( 'woocommerce_customer_meta_fields', 'misha_admin_address_field' );
function misha_admin_address_field( $admin_fields ) {
$admin_fields['billing']['fields']['billing_fav_color'] = array(
'label' => 'Fav color',
'description' => 'Some field description will go here',
);
// or $admin_fields['shipping']['fields']['shipping_fav_color']
// or both
return $admin_fields;
}
在這里我們需要兩個(gè)參數(shù)-?label和description即可。只要確保該字段名稱(第5行)匹配即可。
如果您也想在WordPress后臺(tái)編輯訂單頁(yè)面上添加字段,請(qǐng)閱讀此處的方法。
聲明:原文出自 https://rudrastyh.com/woocommerce/billing-and-shipping-address-fields.html ,由WordPress大學(xué)翻譯整理,轉(zhuǎn)載請(qǐng)保留該聲明!




