Wordpress教程 2024年07月19日
0 收藏 0 点赞 156 浏览 2234 个字
// 添加自定义字段到结账页面并显示在邮编下面
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);

 

微信扫一扫

支付宝扫一扫

版权: 转载请注明出处:https://www.mizhanw.com/blog/4921.html

相关推荐
实现 WordPress 自动更新所有文章的发布日期为当天的日期
//二开自动更新文章日期为当天发布。 //设置宝塔面板中的定时任务,通过访问带有?update_posts=run的链接触发文章更新.如:c…
日期:2024-09-22 点赞:0 阅读:46
WooCommerce订单列表显示购买产品
// 为 Legacy CPT-based 订单添加自定义列 add_filter('manage_edit-shop_order_colu…
日期:2024-09-20 点赞:0 阅读:99
WooCommerce Order 类的所有Get方法,以面向对象的方法获取订单数据
在开发WooCommerce插件或者与第三方系统交互时,我们需要获取 WooCommerce 订单的数据,WooCommerce的 WC_O…
日期:2024-09-20 点赞:0 阅读:56
为WooCommerce后台订单列表添加按自定义字段功能
  // 添加自定义列到订单列表 add_filter('manage_woocommerce_page_wc-orders_co…
日期:2024-09-20 点赞:0 阅读:60
添加删除 WooCommerce 数据列表中的数据列
转载:添加删除 WooCommerce 数据列表中的数据列 _WordPress智库 (wpzhiku.com) 在 WooCommerce…
日期:2024-09-20 点赞:0 阅读:71
WooCommerce的结账页面的订单摘要中,在商品数量后添加加减按钮
关于 WooCommerce 结账页面的定制内容在网上有大量讨论。为什么呢?因为结账页面无疑是任何 WooCommerce 网站的关键页面!…
日期:2024-08-11 点赞:0 阅读:126
发表评论
暂无评论

还没有评论呢,快来抢沙发~