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

Woocommerce后台添加订单时如何通过ID区分不同的订单创建用户?

WooCommerce 按用户ID区分订单创建操作人员方案

实现逻辑

WooCommerce 默认不会记录后台手动创建订单的操作人身份,我们可以通过钩子函数将操作人ID存入订单自定义字段,再在后台对应位置展示即可实现需求。

具体操作步骤

  • 新增订单自动记录创建人ID
    将以下代码添加到当前使用主题的functions.php文件,或自定义功能插件中:
// 保存后台手动创建订单的操作人ID
add_action('woocommerce_new_order', 'save_order_creator_user_id', 10, 1);
function save_order_creator_user_id( $order_id ) {
    // 仅触发后台拥有 WooCommerce 管理权限的操作场景
    if ( is_admin() && current_user_can('manage_woocommerce') ) {
        $current_user_id = get_current_user_id();
        if ( $current_user_id ) {
            // 将操作人ID存入订单自定义字段
            update_post_meta( $order_id, '_order_created_by', $current_user_id );
        }
    }
}
  • 后台订单详情页展示创建人信息
    继续添加以下代码,即可在订单详情页直接查看对应创建人ID和名称:
// 后台订单详情页渲染订单创建人信息
add_action('woocommerce_admin_order_data_after_billing_address', 'show_order_creator_info', 10, 1);
function show_order_creator_info( $order ) {
    $creator_id = get_post_meta( $order->get_id(), '_order_created_by', true );
    if ( $creator_id ) {
        $user_info = get_userdata( $creator_id );
        echo '<p><strong>订单创建操作人员:</strong>'.$user_info->display_name.' (用户ID:'.$creator_id.')</p>';
    }
}
  • (可选)订单列表按创建人筛选
    如果需要在订单列表页直接按操作人筛选所有订单,添加以下代码即可实现自定义筛选器:
// 订单列表顶部添加创建人筛选下拉框
add_action('restrict_manage_posts', 'add_order_creator_filter');
function add_order_creator_filter() {
    global $typenow;
    if ($typenow == 'shop_order') {
        wp_dropdown_users(array(
            'name' => 'order_created_by',
            'show_option_all' => '所有订单创建人',
            'role__in' => array('administrator', 'shop_manager'), // 可根据实际账号角色调整参数
            'selected' => isset($_GET['order_created_by']) ? $_GET['order_created_by'] : '',
        ));
    }
}

// 实现创建人筛选查询逻辑
add_filter('pre_get_posts', 'filter_orders_by_creator');
function filter_orders_by_creator($query) {
    global $pagenow;
    $query_vars = $query->query_vars;
    if (
        $pagenow == 'edit.php' &&
        isset($query_vars['post_type']) &&
        $query_vars['post_type'] == 'shop_order' &&
        isset($_GET['order_created_by']) &&
        !empty($_GET['order_created_by'])
    ) {
        $query->query_vars['meta_key'] = '_order_created_by';
        $query->query_vars['meta_value'] = $_GET['order_created_by'];
    }
    return $query;
}

提示:修改主题functions.php文件前请先做好文件备份,避免语法错误导致站点后台无法访问。

历史订单处理说明

上述代码仅对新增的订单生效,如需给历史订单补录创建人信息,可进入对应订单编辑页,手动添加自定义字段_order_created_by,字段值填写对应操作人的用户ID即可。

内容的提问来源于stack exchange,提问作者sharjeel sandhu

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 07:45:04