2015-04-15 44 views
0

我发现this thread但它并不完全符合我的要求。Woocommerce购买后的默认角色和角色

我的问题是,如何将默认的Woocommerce角色“客户”更改为例如“订阅者”为新的注册用户。 然后,如果用户签出(购买产品),则将角色从“订户”更改为“客户”。

我在问这个问题,因为我想为每个用户角色显示不同的内容:“注册客户”和“订阅(付费)客户”。

+0

只有建议...如果你想显示或隐藏内容而不是产品,我会强烈建议你使用付费会员专业https://wordpress.org/plugins/paid-memberships-pro/而不是woocommerce。 –

回答

0

问题的第一部分是更改由WooCommerce创建的用户的默认角色。老实说,我可能会将默认角色作为客户。然后为购买特定产品的人创建新的角色/功能。

add_filter('woocommerce_new_customer_data', 'so_29647785_default_role'); 

function so_29647785_default_role($data){ 
    $data['role'] = 'subscriber'; // the new default role 
    return $data; 
} 

正如你在我的其他答案看到(以及我重贴的答案),你可以做的事情,一旦用户完成支付,但钩住woocommerce_order_status_completed钩。

要使代码适应特定产品的某些操作,您需要遍历订单项并根据产品ID检查它们。将999替换为相关产品的ID。

add_action('woocommerce_order_status_completed', 'so_29647785_convert_customer_role'); 

function so_29647785_convert_customer_role($order_id) { 

    $order = new WC_Order($order_id); 

    if ($order->user_id > 0) { 

     foreach ($order->get_items() as $order_item) { 

      if(999 == $order_item[ 'product_id' ]) { 
       $user = new WP_User($order->user_id); 

       // Remove existing role 
       $user->remove_role('customer'); 

       // Add new role 
       $user->add_role('subscriber');   
      } 

     } 

    } 
} 

注:完全未经测试,但在理论上看起来是正确的。

+0

谢谢你的回答!我会在我的网站上测试这个。关于将默认角色更改为“订阅者”。你是对的,将默认角色“客户”保持原样,然后创建一个新角色是有意义的。 “付费客户”为结帐用户。 – Teon

相关问题