Я использую этот код для создания пользовательских полей проверочные и изменить порядок полей:Пользовательские выпадающий селектор отображения или скрытия других Checkout пользовательских полей
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_number_id']['type'] = 'text';
$fields['billing']['billing_number_id']['class'] = array('form-row-wide', 'status-group1');
$fields['billing']['billing_number_id']['required'] = true;
$fields['billing']['billing_number_id']['label'] = __('Serial ID', 'my_theme_slug');
$fields['billing']['billing_number_id']['placeholder'] = __('Enter your Serial ID', 'my_theme_slug');
// Customizing 'billing_company' field ['required']
$fields['billing']['billing_company']['required'] = false;
// The "Serial ID" text field
$fields['billing']['billing_serial']['type'] = 'text';
$fields['billing']['billing_serial']['class'] = array('form-row-wide', 'status-group1');
$fields['billing']['billing_serial']['required'] = false;
$fields['billing']['billing_serial']['label'] = __('Serial ID', 'my_theme_slug');
$fields['billing']['billing_serial']['placeholder'] = __('Enter your Serial ID', '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_email',
'billing_phone', 'billing_address_1', 'billing_address_2',
'billing_postcode', 'billing_city', 'billing_country',
'billing_status',
'billing_company', 'billing_number_id', 'billing_serial'
);
foreach($fields_order as $field) $ordered_fields[$field] = $fields['billing'][$field];
$fields['billing'] = $ordered_fields;
// Returning Checkout customized billing fields
return $fields;
}
Условный механизм:
- По умолчанию
billing_status
выпадающий селектор будет наIndividual
значение опции и покажет толькоbilling_serial
пользовательское поле. - Когда селектор
billing_status
выпадающих будет переключен на"Company"
** значение параметра, появится еще 2 поля:billing_company
существующего поля (доbilling_serial
)billing_number_id
пользовательских полей (на конец)
Как я могу это достичь?
Благодаря
Ссылка: WooCommerce - Checkout conditional fields for different persons custom status
Это просто, пользователь завершит только имя, и фамилия, после этого он выберет статус своего лица, если он является юридическим лицом или физическим лицом. Если он выберет из раскрывающегося меню выбора индивидуальный статус, поле, которое должно отображаться, будет являться телефоном, адресом, электронной почтой и серийным идентификатором. Если он является юридическим лицом, мне нужно следующие поля: - телефон - электронный - адрес - порядковый номер документа для компании - и 3 других областей –
нормально, причина того, что я хочу, эта структура является то, что если я хочу вывести счет-фактуру на эти данные в зависимости от типа человека. Теперь есть смысл? –
Привлечение данных к благодарности и счету будет будущим другим вопросам, я думаю :) – LoicTheAztec