【发布时间】:2016-12-31 22:36:52
【问题描述】:
我使用此代码创建自定义结帐字段和重新排序字段:
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 个字段
-
好的,我想要这种结构的原因是,如果我想在发票上携带这些数据,则取决于人的类型。现在有意义吗?
-
将数据带给thankyou和发票将是未来的其他问题,我认为:)
标签: php jquery wordpress woocommerce checkout