WordPress WooCommerce下单时添加一个身份证号码的自定义字段

WordPress WooCommerce下单时添加一个身份证号码的自定义字段-大可建站

在 WooCommerce 中添加一个身份证号码的自定义字段,可以通过以下几个步骤来实现,将以下代码添加到您的当前启用主题functions.php 文件中

// 在配送地址部分添加身份证字段,并将其放在姓名字段之后
function custom_woocommerce_checkout_fields($fields) {
    // 在配送地址部分插入身份证字段
    $fields['shipping']['shipping_id_card'] = array(
        'type'        => 'text',
        'label'       => '身份证号码',
        'placeholder' => '请输入身份证号码',
        'required'    => true, // 设置为必填字段
        'class'       => array('form-row-wide'),
        'priority'    => 20, // 控制字段的显示顺序,调整为姓名之后
    );

    // 如果你也希望身份证字段出现在账单地址部分
    $fields['billing']['billing_id_card'] = array(
        'type'        => 'text',
        'label'       => '身份证号码',
        'placeholder' => '请输入身份证号码',
        'required'    => true, // 设置为必填字段
        'class'       => array('form-row-wide'),
        'priority'    => 20, // 控制字段的显示顺序,调整为姓名之后
    );

    return $fields;
}
add_filter('woocommerce_checkout_fields', 'custom_woocommerce_checkout_fields');

说明

  • shipping_id_card: 这会把身份证字段添加到 配送地址 部分。
  • priority: 这个参数控制字段在表单中的显示顺序。priority => 20 确保身份证字段出现在姓名字段之后。你可以根据需要调整数字,以确保它在你想要的位置。

步骤 2: 保存身份证号码

在保存订单元数据时,确保将身份证号码保存到订单的 shipping_id_card 或 billing_id_card 中。

// 保存身份证号码
function custom_woocommerce_checkout_update_order_meta($order_id) {
    if (!empty($_POST['shipping_id_card'])) {
        update_post_meta($order_id, '_shipping_id_card', sanitize_text_field($_POST['shipping_id_card']));
    }
    if (!empty($_POST['billing_id_card'])) {
        update_post_meta($order_id, '_billing_id_card', sanitize_text_field($_POST['billing_id_card']));
    }
}
add_action('woocommerce_checkout_update_order_meta', 'custom_woocommerce_checkout_update_order_meta');

步骤 3: 在后台订单详情中显示身份证号码

如果你希望在后台订单详情页面显示身份证号码,可以修改代码来显示 shipping_id_card 和 billing_id_card。

// 在后台订单详情中显示身份证号码
function custom_woocommerce_admin_order_data_after_billing_address($order) {
    $shipping_id_card = get_post_meta($order->get_id(), '_shipping_id_card', true);
    $billing_id_card = get_post_meta($order->get_id(), '_billing_id_card', true);

    if ($shipping_id_card) {
        echo '<p><strong>配送地址身份证号码:</strong> ' . esc_html($shipping_id_card) . '</p>';
    }
    if ($billing_id_card) {
        echo '<p><strong>账单地址身份证号码:</strong> ' . esc_html($billing_id_card) . '</p>';
    }
}
add_action('woocommerce_admin_order_data_after_billing_address', 'custom_woocommerce_admin_order_data_after_billing_address');

步骤 4: 客户端订单详情中显示身份证号码

如果你希望让客户在订单详情页面查看身份证号码:

// 在客户订单详情中显示身份证号码
function custom_woocommerce_order_details_after_customer_details($order) {
    $shipping_id_card = get_post_meta($order->get_id(), '_shipping_id_card', true);
    $billing_id_card = get_post_meta($order->get_id(), '_billing_id_card', true);

    if ($shipping_id_card) {
        echo '<p><strong>配送地址身份证号码:</strong> ' . esc_html($shipping_id_card) . '</p>';
    }
    if ($billing_id_card) {
        echo '<p><strong>账单地址身份证号码:</strong> ' . esc_html($billing_id_card) . '</p>';
    }
}
add_action('woocommerce_order_details_after_customer_details', 'custom_woocommerce_order_details_after_customer_details');

总结

这段代码将身份证字段添加到了配送地址部分,放置在姓名字段之后,并且确保它在结账时作为必填项出现。同时,订单的身份证号码将被保存,并可以在后台和前端订单详情中查看。