Для WooCommerce 3+ (обновление):
Поскольку поля оформления заказа WooCommerce 3.0 немного изменились, невозможно изменить порядок полей, как раньше.
Существует новый аргумент 'priority', который управляет порядком полей, а также для полей проверки и полей моей учетной записи.
Ниже я просто обновляю часть, связанную с полями заказа:
## 3. Ordering the billing fields
// Set the order of the fields
$billing_fields_new_order = array(
'billing_first_name', 'billing_last_name', 'billing_status',
'billing_email', 'billing_phone', 'billing_serial_id',
'billing_custom1', 'billing_custom2', 'billing_custom3',
'billing_company', 'billing_address_1', 'billing_address_2',
'billing_postcode', 'billing_city', 'billing_country',
);
$count = 0;
$priority = 10;
// Updating the 'priority' argument
foreach($billing_fields_new_order as $field_name){
$count++;
$fields['billing'][$field_name]['priority'] = $count * $priority;
}
// END: returning the customized checkout fields
return $fields;
Ссылка: Изменение порядка полей проверки в WooCommerce 3< /а>
Исходный ответ:
Вам нужно использовать хук woocommerce_checkout_fields
. Затем сначала создайте новые поля. После настройки некоторых классов полей. Чтобы закончить, измените порядок поля в соответствии с вашим желанием.
Вот код:
add_filter( 'woocommerce_checkout_fields', 'custom_checkout_billing_fields' );
function custom_checkout_billing_fields( $fields ) {
// 1. Creating the additional custom billing fields
// The "status" selector
$fields['billing']['billing_status']['type'] = 'select';
$fields['billing']['billing_status']['class'] = array('form-row-wide, status-select');
$fields['billing']['billing_status']['required'] = true;
$fields['billing']['billing_status']['label'] = __('User status', 'my_theme_slug');
$fields['billing']['billing_status']['placeholder'] = __('Chose an option', 'my_theme_slug');
$fields['billing']['billing_status']['options'] = array(
'' => 'Chose an option',
'1' => 'Legal entity',
'2' => 'Individual'
);
// The "Serial ID" text field
$fields['billing']['billing_serial_id']['type'] = 'text';
$fields['billing']['billing_serial_id']['class'] = array('form-row-wide', 'status-group1');
$fields['billing']['billing_serial_id']['required'] = true;
$fields['billing']['billing_serial_id']['label'] = __('Serial ID', 'my_theme_slug');
$fields['billing']['billing_serial_id']['placeholder'] = __('Enter your Serial ID', 'my_theme_slug');
// The "Custom 1" text field
$fields['billing']['billing_custom1']['type'] = 'text';
$fields['billing']['billing_custom1']['class'] = array('form-row-wide', 'status-group2');
$fields['billing']['billing_custom1']['required'] = true;
$fields['billing']['billing_custom1']['label'] = __('Custom name 1', 'my_theme_slug');
$fields['billing']['billing_custom1']['placeholder'] = __('Enter your custom1', 'my_theme_slug');
// The "Custom 2" text field
$fields['billing']['billing_custom2']['type'] = 'text';
$fields['billing']['billing_custom2']['class'] = array('form-row-wide', 'status-group2');
$fields['billing']['billing_custom2']['required'] = true;
$fields['billing']['billing_custom2']['label'] = __('Custom name 2', 'my_theme_slug');
$fields['billing']['billing_custom2']['placeholder'] = __('Enter your custom2', 'my_theme_slug');
// The "Custom 3" text field
$fields['billing']['billing_custom3']['type'] = 'text';
$fields['billing']['billing_custom3']['class'] = array('form-row-wide', 'status-group2');
$fields['billing']['billing_custom3']['required'] = true;
$fields['billing']['billing_custom3']['label'] = __('Custom name 3', 'my_theme_slug');
$fields['billing']['billing_custom3']['placeholder'] = __('Enter your custom3', 'my_theme_slug');
// 2. Customizing 'billing_email' and 'billing_phone' fields ['class']
$fields['billing']['billing_email']['class'] = array('form-row-first', 'status-group1');
$fields['billing']['billing_phone']['class'] = array('form-row-last', 'status-group1');
// 3. Ordering the billing fields
$fields_order = array(
'billing_first_name', 'billing_last_name', 'billing_status',
'billing_email', 'billing_phone', 'billing_serial_id',
'billing_custom1', 'billing_custom2', 'billing_custom3',
'billing_company', 'billing_address_1', 'billing_address_2',
'billing_postcode', 'billing_city', 'billing_country',
);
foreach($fields_order as $field) $ordered_fields[$field] = $fields['billing'][$field];
$fields['billing'] = $ordered_fields;
// Returning Checkout customized billing fields
return $fields;
}
Естественно, это происходит в файле function.php вашей активной дочерней темы или темы.
Этот код протестирован и полностью функционален.
Теперь с помощью этого кода вы можете задать вопрос, чтобы обработать условную часть этого вопроса (как я сказал вам в комментариях)…
Официальная ссылка: WooThemes — настройка полей проверки с помощью действия и фильтры
person
LoicTheAztec
schedule
18.08.2016