WooCommerce按手机号/订单号尾号分配订单至店铺管理员需求
WooCommerce订单按规则分配管理员方案及代码实现
我们可以基于你提供的代码框架,修改为两种符合需求的订单分配逻辑,确保两位管理员处理的订单数量基本持平:
方案一:按账单手机号尾号分配
逻辑:提取订单账单手机号的最后一位数字,奇数分配给管理员A,偶数分配给管理员B。
实现代码
function assign_order_to_manager_by_phone($order, $data) { // 替换为你的两位管理员实际ID $manager_a_id = 1; // 处理尾号奇数的订单 $manager_b_id = 2; // 处理尾号偶数的订单 $billing_phone = $order->get_billing_phone(); $store_manager_id = $manager_a_id; // 默认分配给管理员A if (!empty($billing_phone)) { // 获取手机号最后一位数字 $last_digit = substr(trim($billing_phone), -1); // 判断是否为偶数 if (is_numeric($last_digit) && $last_digit % 2 == 0) { $store_manager_id = $manager_b_id; } } // 给订单添加管理员分配标记 $order->update_meta_data('_store_manager_id', $store_manager_id); } add_action('woocommerce_checkout_create_order', 'assign_order_to_manager_by_phone', 20, 2);
注意事项
- 若用户未填写账单手机号,订单会默认分配给管理员A,你可根据需求调整默认值
- 若手机号包含
+、-等特殊字符,可先添加清洗逻辑过滤非数字内容
方案二:按订单号尾号分配
如果手机号方案因数据缺失等原因无法使用,可改用订单号尾号判断,逻辑与手机号一致。
实现代码
function assign_order_to_manager_by_order_id($order, $data) { // 替换为你的两位管理员实际ID $manager_a_id = 1; // 处理尾号奇数的订单 $manager_b_id = 2; // 处理尾号偶数的订单 $order_number = $order->get_order_number(); $store_manager_id = $manager_a_id; if (!empty($order_number)) { // 获取订单号最后一位数字 $last_digit = substr(trim($order_number), -1); if (is_numeric($last_digit) && $last_digit % 2 == 0) { $store_manager_id = $manager_b_id; } } $order->update_meta_data('_store_manager_id', $store_manager_id); } add_action('woocommerce_checkout_create_order', 'assign_order_to_manager_by_order_id', 20, 2);
你提供的原始参考代码(按国家分配版本)
function before_checkout_create_order($order, $data) { $country = $order->billing_country; $store_manager_id = ''; $belgium_region = ['BE', 'NL', 'DE']; $czech_region = ['CZ', 'AT', 'SI', 'HU']; $uk_region = ['GB']; if (in_array($country, $belgium_region)) { // 手动分配_store_manager_id,这里的用户ID需要替换为你的实际ID $store_manager_id = 7; } else if (in_array($country, $czech_region)) { $store_manager_id = 3; } else if (in_array($country, $uk_region)) { $store_manager_id = 2; } else { $store_manager_id = 1; } $order->update_meta_data('_store_manager_id', $store_manager_id); } add_action('woocommerce_checkout_create_order', 'before_checkout_create_order', 20, 2);
内容的提问来源于stack exchange,提问作者Jesse Ryan
相关产品推荐
相关产品推荐

