2016-01-16 59 views
0

我的WordPress的網站有兩種類型的用戶。當他們註冊時,他們提名他們的用戶類型,並且我想要分配兩個角色中的一個角色,具體取決於他們是哪一種用戶類型。WordPress的用戶角色 - 重力形式用戶註冊 - 有條件地add_role

我的用戶註冊頁面有一個單選按鈕,新用戶在這裏選擇他們是否在兩種註冊類型之間。爲了討論的目的,讓我們調用註冊類型'貓'和'狗'。

我已經添加了一個貓/狗單選按鈕到重力形式,用戶可以選擇'狗' - 單選按鈕默認爲'貓'。這個字段是'RegisterAs'。

重力形式用戶註冊允許我爲新用戶設置角色。我選擇了「狗」爲所有新註冊

用於收集新用戶數據重力形式所具有的確認重定向到一個貓或狗頁: Confirmation

的貓或狗頁面有一個分配給它的模板 - 我們稱之爲'cat-or-dog.php'。這包含此代碼:

<?php 
/* Template Name: Cat or Dog */ 
if (isset($_GET['RegAs'])) { 
if ($_GET['RegAs']=='Dog') { 
global $current_user; 
var_dump($current_user->roles); 
$current_user->add_role('Dog'); 
echo "After:"; 
var_dump($current_user->roles); 
die(); 

我希望輸出顯示從狗到貓的角色變化。相反,從這裏輸出如下:

array(1){[0] => string(6)「cat」} after:array(1){[0] => string(6) 「cat」}

所以看來,add_role什麼都不做!

任何人都可以更正我的代碼嗎?或者,在用戶註冊過程中,還有另一種方式可以在單選按鈕上分配角色。

我想使用重力形式與用戶註冊插件,因爲這是用於整個網站,我不是一個插件收集器。

請注意,我還沒有刪除'貓'角色 - 我首先想要克服這個add_role問題。然後我會努力消除這個角色。

回答

0

gform_user_registered掛鉤由Gravity Forms代碼提供以實現此目的。

https://www.gravityhelp.com/documentation/article/gform_user_registered/

在我的主題functions.php文件的最頂端,我包括在此代碼:

function change_cat_dog_role($user_id, $user_config, $entry, $user_pass) { 
    $question1 = rgar($entry, '8'); //field id 8 


    if ($question1 == 'Dog') { 
     //update role 
     $user_obj = new WP_User($user_id); 
     $user_obj->add_role('dog'); 
    } 
} 

add_action('gform_user_registered', 'change_cat_dog_role', 11, 4); 

注意添加角色「狗」是低的情況下,即使作用實際上正確的情況下'狗'。