// 添加自定义字段到结账页面并显示在邮编下面
add_filter('woocommerce_checkout_fields', 'custom_checkout_fields');
function custom_checkout_fields($fields) {
// 添加到账单地址字段
$fields['billing']['billing_custom_id'] = array(
'type' => 'text',
'class' => array('form-row-wide'),
'label' => __('身份证号码(仅用于海关清关)'),
'placeholder' => '',
'required' => true,
'priority' => 95, // 设置字段显示顺序,确保在邮编下面
);
// 调整邮编字段的优先级,以确保自定义字段显示在邮编字段下面
$fields['billing']['billing_postcode']['priority'] = 90;
// 添加到配送地址字段
$fields['shipping']['shipping_custom_id'] = array(
'type' => 'text',
'class' => array('form-row-wide'),
'label' => __('身份证号码(仅用于海关清关)'),
'placeholder' => '',
'required' => true,
'priority' => 95, // 设置字段显示顺序,确保在邮编下面
);
// 调整邮编字段的优先级,以确保自定义字段显示在邮编字段下面
$fields['shipping']['shipping_postcode']['priority'] = 90;
return $fields;
}
// 添加验证逻辑,确保字段是必填的
add_action('woocommerce_checkout_process', 'customised_checkout_field_process');
function customised_checkout_field_process() {
if (empty($_POST['billing_custom_id'])) {
wc_add_notice(__('请填写身份证号码(仅用于海关清关)在账单地址中'), 'error');
}
if ( !empty($_POST['ship_to_different_address']) && empty($_POST['shipping_custom_id'])) {
wc_add_notice(__('请填写身份证号码(仅用于海关清关)在配送地址中'), 'error');
}
}
// 保存自定义字段数据到订单元数据中
add_action('woocommerce_checkout_update_order_meta', 'custom_checkout_field_update_order_meta');
function custom_checkout_field_update_order_meta($order_id) {
if (!empty($_POST['billing_custom_id'])) {
update_post_meta($order_id, '_billing_custom_id', sanitize_text_field($_POST['billing_custom_id']));
}
if (!empty($_POST['shipping_custom_id'])) {
update_post_meta($order_id, '_shipping_custom_id', sanitize_text_field($_POST['shipping_custom_id']));
}
}
// 在订单详情页和邮件中显示自定义字段
function display_custom_billing_field_order_meta($order) {
$custom_id_billing = get_post_meta($order->get_id(), '_billing_custom_id', true);
$custom_id_shipping = get_post_meta($order->get_id(), '_shipping_custom_id', true);
if (!empty($custom_id_billing)) {
echo '<p><strong>' . __('身份证号码(仅用于海关清关)') . ':</strong> ' . esc_html($custom_id_billing) . '</p>';
}
if (!empty($custom_id_shipping)) {
echo '<p><strong>' . __('身份证号码(仅用于海关清关)') . ':</strong> ' . esc_html($custom_id_shipping) . '</p>';
}
}
add_action('woocommerce_admin_order_data_after_billing_address', 'display_custom_billing_field_order_meta', 10, 1);
add_action('woocommerce_email_customer_details', 'display_custom_billing_field_order_meta', 20, 1);
还没有评论呢,快来抢沙发~