重新排列(按优先级排序)Woocommerce 我的帐户字段
Rearrange (sort by priority) Woocommerce my account fields
如何重新排列 my-account
字段。我想在 billing_state
和 billing_city
字段之后找到 billing_address_1
字段。
我使用 woocommerce_form_field_args
钩子然后使用 switch
找到每个 arg
.
function bcod_wc_form_field_args( $args, $key, $value ){
switch ($key) {
case 'billing_country':
$args['class'] = array('hidden');
break;
case 'billing_address_1' :
$args['priority'] = '85';// push down this field to bottom of state and city
$args['label'] = $args['label'] . ' Priority : ' . $args['priority'];
$args['placeholder'] = 'خیابان اصلی ، خیابان فرعی ، کوچه ، پلاک';
break;
case 'billing_state' :
$args['priority'] = '50';
$args['label'] = $args['label'] . ' Priority : ' . $args['priority'];
$args['class'] = array('form-row-first');
break;
case 'billing_city' :
$args['priority'] = '55';
$args['label'] = $args['label'] . ' Priority : ' . $args['priority'];
$args['class'] = array('form-row-last');
break;
case 'billing_postcode' :
$args['label'] = $args['label'] . ' Priority : ' . $args['priority'];
$args['priority'] = '190';
$args['class'] = array('form-row-first');
break;
case 'billing_email' :
$args['label'] = $args['label'] . ' Priority : ' . $args['priority'];
$args['priority'] = '80';
$args['class'] = array('form-row-last');
break;
default:
return $args;
break;
}
return $args;
}
我希望 billing_address_1
字段位于 state
和 city
之后,但此代码不会影响字段的排序。优先级已更改,但字段位于默认位置。这张图片是我的结果:
(来源:imgurl.ir)
要重新排列 "My account" 地址帐单字段,您需要使用如下内容:
// Change billing fields location
add_filter( 'woocommerce_billing_fields', 'arrange_billing_fields', 10, 1 );
function arrange_billing_fields( $fields ){
// Only on my account
if( is_account_page() ) :
$fields['billing_country']['class'] = array('hidden');
$fields['billing_state']['priority'] = '50';
$fields['billing_state']['label'] .= ' (Priority : '.$fields['billing_state']['priority'].')';
$fields['billing_state']['class'] = array('form-row-first');
$fields['billing_city']['priority'] = '55';
$fields['billing_city']['label'] .= ' (Priority : '.$fields['billing_city']['priority'].')';
$fields['billing_city']['class'] = array('form-row-last');
$fields['billing_email']['priority'] = '80';
$fields['billing_email']['label'] .= ' (Priority : '.$fields['billing_email']['priority'].')';
$fields['billing_email']['class'] = array('form-row-last');
$fields['billing_address_1']['priority'] = '85';
$fields['billing_address_1']['label'] .= ' (Priority : '.$fields['billing_address_1']['priority'].')';
$fields['billing_address_1']['placeholder'] = 'خیابان اصلی ، خیابان فرعی ، کوچه ، پلاک';
$fields['billing_postcode']['priority'] = '190';
$fields['billing_postcode']['label'] .= ' (Priority : '.$fields['billing_postcode']['priority'].')';
$fields['billing_postcode']['class'] = array('form-row-first');
endif;
return $fields;
}
// For the state field priority location for some countries
add_filter( 'woocommerce_get_country_locale', 'custom_country_locale', 10, 1 );
function custom_country_locale( $countries_locale ){
// Only on my account
if( is_account_page() ):
// Loop Through country locale array
foreach( $countries_locale as $country_code => $fields ){
// Loop through defined fields (targeting the state field)
foreach( $fields as $field_key => $data ) {
if( $field_key == 'state' && isset($data['priority']) ){
$countries_locale[$country_code][$field_key]['priority'] = '50';
}
}
}
endif;
return $countries_locale;
}
代码进入您的活动子主题(或活动主题)的 function.php 文件。已测试并有效。
如何重新排列 my-account
字段。我想在 billing_state
和 billing_city
字段之后找到 billing_address_1
字段。
我使用 woocommerce_form_field_args
钩子然后使用 switch
找到每个 arg
.
function bcod_wc_form_field_args( $args, $key, $value ){
switch ($key) {
case 'billing_country':
$args['class'] = array('hidden');
break;
case 'billing_address_1' :
$args['priority'] = '85';// push down this field to bottom of state and city
$args['label'] = $args['label'] . ' Priority : ' . $args['priority'];
$args['placeholder'] = 'خیابان اصلی ، خیابان فرعی ، کوچه ، پلاک';
break;
case 'billing_state' :
$args['priority'] = '50';
$args['label'] = $args['label'] . ' Priority : ' . $args['priority'];
$args['class'] = array('form-row-first');
break;
case 'billing_city' :
$args['priority'] = '55';
$args['label'] = $args['label'] . ' Priority : ' . $args['priority'];
$args['class'] = array('form-row-last');
break;
case 'billing_postcode' :
$args['label'] = $args['label'] . ' Priority : ' . $args['priority'];
$args['priority'] = '190';
$args['class'] = array('form-row-first');
break;
case 'billing_email' :
$args['label'] = $args['label'] . ' Priority : ' . $args['priority'];
$args['priority'] = '80';
$args['class'] = array('form-row-last');
break;
default:
return $args;
break;
}
return $args;
}
我希望 billing_address_1
字段位于 state
和 city
之后,但此代码不会影响字段的排序。优先级已更改,但字段位于默认位置。这张图片是我的结果:
(来源:imgurl.ir)
要重新排列 "My account" 地址帐单字段,您需要使用如下内容:
// Change billing fields location
add_filter( 'woocommerce_billing_fields', 'arrange_billing_fields', 10, 1 );
function arrange_billing_fields( $fields ){
// Only on my account
if( is_account_page() ) :
$fields['billing_country']['class'] = array('hidden');
$fields['billing_state']['priority'] = '50';
$fields['billing_state']['label'] .= ' (Priority : '.$fields['billing_state']['priority'].')';
$fields['billing_state']['class'] = array('form-row-first');
$fields['billing_city']['priority'] = '55';
$fields['billing_city']['label'] .= ' (Priority : '.$fields['billing_city']['priority'].')';
$fields['billing_city']['class'] = array('form-row-last');
$fields['billing_email']['priority'] = '80';
$fields['billing_email']['label'] .= ' (Priority : '.$fields['billing_email']['priority'].')';
$fields['billing_email']['class'] = array('form-row-last');
$fields['billing_address_1']['priority'] = '85';
$fields['billing_address_1']['label'] .= ' (Priority : '.$fields['billing_address_1']['priority'].')';
$fields['billing_address_1']['placeholder'] = 'خیابان اصلی ، خیابان فرعی ، کوچه ، پلاک';
$fields['billing_postcode']['priority'] = '190';
$fields['billing_postcode']['label'] .= ' (Priority : '.$fields['billing_postcode']['priority'].')';
$fields['billing_postcode']['class'] = array('form-row-first');
endif;
return $fields;
}
// For the state field priority location for some countries
add_filter( 'woocommerce_get_country_locale', 'custom_country_locale', 10, 1 );
function custom_country_locale( $countries_locale ){
// Only on my account
if( is_account_page() ):
// Loop Through country locale array
foreach( $countries_locale as $country_code => $fields ){
// Loop through defined fields (targeting the state field)
foreach( $fields as $field_key => $data ) {
if( $field_key == 'state' && isset($data['priority']) ){
$countries_locale[$country_code][$field_key]['priority'] = '50';
}
}
}
endif;
return $countries_locale;
}
代码进入您的活动子主题(或活动主题)的 function.php 文件。已测试并有效。