我發現this thread但它並不完全符合我的要求。Woocommerce購買後的默認角色和角色
我的問題是,如何將默認的Woocommerce角色「客戶」更改爲例如「訂閱者」爲新的註冊用戶。 然後,如果用戶簽出(購買產品),則將角色從「訂戶」更改爲「客戶」。
我在問這個問題,因爲我想爲每個用戶角色顯示不同的內容:「註冊客戶」和「訂閱(付費)客戶」。
我發現this thread但它並不完全符合我的要求。Woocommerce購買後的默認角色和角色
我的問題是,如何將默認的Woocommerce角色「客戶」更改爲例如「訂閱者」爲新的註冊用戶。 然後,如果用戶簽出(購買產品),則將角色從「訂戶」更改爲「客戶」。
我在問這個問題,因爲我想爲每個用戶角色顯示不同的內容:「註冊客戶」和「訂閱(付費)客戶」。
問題的第一部分是更改由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');
}
}
}
}
注:完全未經測試,但在理論上看起來是正確的。
謝謝你的回答!我會在我的網站上測試這個。關於將默認角色更改爲「訂閱者」。你是對的,將默認角色「客戶」保持原樣,然後創建一個新角色是有意義的。 「付費客戶」爲結帳用戶。 – Teon
只有建議...如果你想顯示或隱藏內容而不是產品,我會強烈建議你使用付費會員專業https://wordpress.org/plugins/paid-memberships-pro/而不是woocommerce。 –