You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

实现Woocommerce从用户资料自动填充订单税务字段(支持后台新建订单)

实现WordPress用户自定义字段自动填充到WooCommerce订单(支持后台新建订单)

需求说明

将WordPress用户资料中自定义字段company_tax_number或已有的billing_tax_number值,自动填充到WooCommerce订单的billing_tax_number元数据字段中,要求同时支持前台结账创建订单和后台手动新建订单两种场景。

原代码局限

你提供的代码仅绑定了woocommerce_checkout_create_order钩子,该钩子仅在前台结账流程中触发,后台手动新建订单时不会执行填充逻辑,因此需要补充后台对应的处理逻辑。

完整解决方案代码

// 定义通用的填充订单税号逻辑函数
function fill_order_tax_number_from_user_meta( $order_id ) {
    $order = wc_get_order( $order_id );
    if ( ! $order ) return;

    $user_id = $order->get_customer_id();
    // 游客订单无用户ID,直接返回
    if ( empty( $user_id ) || $user_id == 0 ) return;

    // 检查订单是否已有税号,已有则跳过
    $existing_tax_number = $order->get_billing_tax_number();
    if ( ! empty( $existing_tax_number ) ) return;

    // 从用户元数据中获取税号:优先取billing_tax_number,再取company_tax_number
    $gst_data = get_user_meta( $user_id, 'billing_tax_number', true );
    if ( empty( $gst_data ) ) {
        $gst_data = get_user_meta( $user_id, 'company_tax_number', true );
    }

    // 填充并保存税号到订单
    if ( ! empty( $gst_data ) ) {
        $order->set_billing_tax_number( $gst_data );
        $order->save();
    }
}

// 前台结账场景:订单创建时触发
add_action( 'woocommerce_checkout_create_order', function( $order, $posted_data ) {
    fill_order_tax_number_from_user_meta( $order->get_id() );
}, 30, 2 );

// 后台新建订单场景:订单保存后触发
add_action( 'woocommerce_admin_process_new_order', 'fill_order_tax_number_from_user_meta' );

// 可选:后台编辑订单时也触发(如果需要编辑订单时自动补全)
// add_action( 'woocommerce_admin_process_shop_order_meta', 'fill_order_tax_number_from_user_meta' );

代码说明

  1. 通用逻辑封装:将税号填充逻辑封装为独立函数,避免重复代码,便于后续维护。
  2. 前台处理:通过woocommerce_checkout_create_order钩子,在前台结账创建订单时执行填充。
  3. 后台处理:通过woocommerce_admin_process_new_order钩子,覆盖后台手动新建订单的场景。
  4. 防重复填充:先检查订单是否已有税号,避免覆盖用户手动填写的值。
  5. 优先级取值:优先使用用户资料中的billing_tax_number,为空时再回退到自定义字段company_tax_number。
  6. 游客订单兼容:判断用户ID是否为空,避免游客订单触发无效逻辑。

内容的提问来源于stack exchange,提问作者Mye Space

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 19:54:26