2017-08-25 29 views
2

我们有一个服务woocommerce网上商店和三个店铺经理。我如何将订单分配给Woocommerce中的某个店铺经理

我们希望筛选新订单并将其分配给这三位经理之一。经理只能看到他们分配的订单,并且不能访问或查看剩余的订单。

也许这可以通过custom_field过滤后端视图(管理面板)来完成,但我不知道这是否是一种好方法。也许有一个基于角色能力的插件。

有什么建议吗?

谢谢。

回答

0

在遇到同样的问题后,我将相似的,已经回答的问题的解决方案结合起来,并且工作正常。我知道这个问题很古老,但有人可能会觉得它有帮助。这里是一个可能的解决方案:

  1. 添加自定义元的主要含所需store_manager ID到每一个订单(在我的情况下,如果一个命令是从一个特定的国家,我想只有一个sprecific store_manager看到它,你可以把你的自定义逻辑在before_checkout_create_order()功能)


    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)) { 
      // Manually assigning the _store_manager_id using the user id, yours will differ 
      $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); 

我找到了方法的顺序ON THIS THREAD你可以看到什么分配自定义元键woocommerce_checkout_create_order$命令 - > update_meta_data()钩和方法在那里做,它已经深受其作者解释

  • 滤波器Woocommerce管理次序列表只显示当前用户分配的订单(但让法师管理员查看所有的订单也)
  • 
    
        function custom_admin_shop_manager_orders($query) { 
         global $pagenow; 
         $qv = &$query->query_vars; 
    
         $currentUserRoles = wp_get_current_user()->roles; 
         $user_id = get_current_user_id(); 
    
         if (in_array('shop_manager', $currentUserRoles)) { 
          if ($pagenow == 'edit.php' && 
            isset($qv['post_type']) && $qv['post_type'] == 'shop_order') { 
           // I use the meta key from step 1 as a second parameter here 
           $query->set('meta_key', '_store_manager_id'); 
           // The value we want to find is the $user_id defined above 
           $query->set('meta_value', $user_id); 
          } 
         } 
    
         return $query; 
        } 
        add_filter('pre_get_posts', 'custom_admin_shop_manager_orders'); 
    
    

    正如你可以看到,我们检查当前用户的角色是shop_manager打完所有的逻辑不一样,如果你算管理员 - 你会看到所有的订单,但如果你是一个shop_manager,你只会得到你的订单。 edit.php是woocommerce订单列表页面。

    我发现THIS THREAD的第二步,所以你可以在那里找到更多的信息。

    希望这可以帮助你!

    相关问题