在 Woocommerce 3 中自定义我的帐户地址字段
Customizing my-account addresses fields in Woocommerce 3
我想删除模板 form-edit-addresses.php 中的表单字段 billing_adress_2。
最后是否可以像这样重新排序表单域:
first_name - last_name
电子邮件 - phone
公司
address_1
邮政编码
城市
状态
我只想将此更改应用到页面(模板)form-edit-addresses.php
感谢任何帮助
此代码将按照您希望的方式更改帐单地址中字段的顺序。将此代码放入您的主题 functions.php 文件中。
add_filter('woocommerce_address_to_edit', 'reorder_woocommerce_address_fields', 10, 2);
function reorder_woocommerce_address_fields( $address, $load_address) {
$new_address['billing_first_name'] = $address['billing_first_name'];
$new_address['billing_last_name'] = $address['billing_last_name'];
$new_address['billing_email'] = $address['billing_email'];
$new_address['billing_phone'] = $address['billing_phone'];
$new_address['billing_email'] = array(
'label' => __('Email', 'woocommerce'),
'required' => true,
'class' => array('form-row-first'),
);
$new_address['billing_phone'] = array(
'label' => __('Phone', 'woocommerce'),
'required' => true,
'class' => array('form-row-last'),
'clear' => true
);
$new_address['billing_company'] = $address['billing_company'];
$new_address['billing_address_1'] = $address['billing_address_1'];
$new_address['billing_postcode'] = $address['billing_postcode'];
$new_address['billing_city'] = $address['billing_city'];
$new_address['billing_state'] = $address['billing_state'];
return $new_address;
}
在我的帐户 > 地址部分,以下挂钩函数将:
- 删除 "Address 2" 账单和送货字段
- 重新排序账单和送货地址字段
- 重新排序账单电子邮件和 phone 字段(在名字和姓氏之后)
- 从显示中删除 "Address 2"
您忘记了可以在 $sorted_fields 数组中轻松重新排序的 "country" 字段…
代码:
// Account Edit Adresses: Remove and reorder addresses fields
add_filter( 'woocommerce_default_address_fields', 'custom_default_address_fields', 20, 1 );
function custom_default_address_fields( $fields ) {
// Only on account pages
if( ! is_account_page() ) return $fields;
## ---- 1. Remove 'address_2' field ---- ##
unset($fields['address_2']);
## ---- 2. Sort Address fields ---- ##
// Set the order (sorting fields) in the array below
$sorted_fields = array('first_name','last_name','company','address_1','country','postcode','city','state');
$new_fields = array();
$priority = 0;
// Reordering billing and shipping fields
foreach($sorted_fields as $key_field){
$priority += 10;
if( $key_field == 'company' )
$priority += 20; // keep space for email and phone fields
$new_fields[$key_field] = $fields[$key_field];
$new_fields[$key_field]['priority'] = $priority;
}
return $new_fields;
}
// Account Edit Adresses: Reorder billing email and phone fields
add_filter( 'woocommerce_billing_fields', 'custom_billing_fields', 20, 1 );
function custom_billing_fields( $fields ) {
// Only on account pages
if( ! is_account_page() ) return $fields;
## ---- 2. Sort billing email and phone fields ---- ##
$fields['billing_email']['priority'] = 30;
$fields['billing_email']['class'] = array('form-row-first');
$fields['billing_phone']['priority'] = 40;
$fields['billing_phone']['class'] = array('form-row-last');
return $fields;
}
// Account Displayed Addresses : Remove 'address_2'
add_filter( 'woocommerce_my_account_my_address_formatted_address' , 'my_account_address_formatted_addresses', 20, 3 );
function my_account_address_formatted_addresses( $address, $customer_id, $address_type ) {
unset($address['address_2']); // remove Address 2
return $address;
}
代码进入您的活动子主题(或活动主题)的 function.php 文件。 测试和工作。
If you want to make that effective in checkout page too, you will have to remove this lines:
// Only on account pages
if( ! is_account_page() ) return $fields;
In each function (2 times)…
我想删除模板 form-edit-addresses.php 中的表单字段 billing_adress_2。
最后是否可以像这样重新排序表单域:
first_name - last_name
电子邮件 - phone
公司
address_1
邮政编码
城市
状态
我只想将此更改应用到页面(模板)form-edit-addresses.php
感谢任何帮助
此代码将按照您希望的方式更改帐单地址中字段的顺序。将此代码放入您的主题 functions.php 文件中。
add_filter('woocommerce_address_to_edit', 'reorder_woocommerce_address_fields', 10, 2);
function reorder_woocommerce_address_fields( $address, $load_address) {
$new_address['billing_first_name'] = $address['billing_first_name'];
$new_address['billing_last_name'] = $address['billing_last_name'];
$new_address['billing_email'] = $address['billing_email'];
$new_address['billing_phone'] = $address['billing_phone'];
$new_address['billing_email'] = array(
'label' => __('Email', 'woocommerce'),
'required' => true,
'class' => array('form-row-first'),
);
$new_address['billing_phone'] = array(
'label' => __('Phone', 'woocommerce'),
'required' => true,
'class' => array('form-row-last'),
'clear' => true
);
$new_address['billing_company'] = $address['billing_company'];
$new_address['billing_address_1'] = $address['billing_address_1'];
$new_address['billing_postcode'] = $address['billing_postcode'];
$new_address['billing_city'] = $address['billing_city'];
$new_address['billing_state'] = $address['billing_state'];
return $new_address;
}
在我的帐户 > 地址部分,以下挂钩函数将:
- 删除 "Address 2" 账单和送货字段
- 重新排序账单和送货地址字段
- 重新排序账单电子邮件和 phone 字段(在名字和姓氏之后)
- 从显示中删除 "Address 2"
您忘记了可以在 $sorted_fields 数组中轻松重新排序的 "country" 字段…
代码:
// Account Edit Adresses: Remove and reorder addresses fields
add_filter( 'woocommerce_default_address_fields', 'custom_default_address_fields', 20, 1 );
function custom_default_address_fields( $fields ) {
// Only on account pages
if( ! is_account_page() ) return $fields;
## ---- 1. Remove 'address_2' field ---- ##
unset($fields['address_2']);
## ---- 2. Sort Address fields ---- ##
// Set the order (sorting fields) in the array below
$sorted_fields = array('first_name','last_name','company','address_1','country','postcode','city','state');
$new_fields = array();
$priority = 0;
// Reordering billing and shipping fields
foreach($sorted_fields as $key_field){
$priority += 10;
if( $key_field == 'company' )
$priority += 20; // keep space for email and phone fields
$new_fields[$key_field] = $fields[$key_field];
$new_fields[$key_field]['priority'] = $priority;
}
return $new_fields;
}
// Account Edit Adresses: Reorder billing email and phone fields
add_filter( 'woocommerce_billing_fields', 'custom_billing_fields', 20, 1 );
function custom_billing_fields( $fields ) {
// Only on account pages
if( ! is_account_page() ) return $fields;
## ---- 2. Sort billing email and phone fields ---- ##
$fields['billing_email']['priority'] = 30;
$fields['billing_email']['class'] = array('form-row-first');
$fields['billing_phone']['priority'] = 40;
$fields['billing_phone']['class'] = array('form-row-last');
return $fields;
}
// Account Displayed Addresses : Remove 'address_2'
add_filter( 'woocommerce_my_account_my_address_formatted_address' , 'my_account_address_formatted_addresses', 20, 3 );
function my_account_address_formatted_addresses( $address, $customer_id, $address_type ) {
unset($address['address_2']); // remove Address 2
return $address;
}
代码进入您的活动子主题(或活动主题)的 function.php 文件。 测试和工作。
If you want to make that effective in checkout page too, you will have to remove this lines:
// Only on account pages if( ! is_account_page() ) return $fields;
In each function (2 times)…