woocommerce在账单地址和配送地址中添加自定义字段

447次阅读
没有评论
// 添加自定义字段到结账页面并显示在邮编下面
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);

 

正文完
 0
评论(没有评论)

觅站网

Posts

Sed cras ornare arcu dui vivamus arcu felis. Cursus euismod quis viverra nibh cras pulvinar mattis nunc.

Melissa Meiers