2015-04-15 40 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

相關問題