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
相关产品推荐
相关产品推荐

