Wordpress用户角色 - 重力表单用户注册 - 有条件地add_role

时间:2016-01-16 02:55:11

标签: wordpress

我的wordpress网站有两种类型的用户。当他们注册时,他们会指定他们的用户类型,我想根据他们的用户类型分配两个角色中的一个。

我的用户注册页面有一个单选按钮,新用户选择是否在两种类型的注册之间。为了讨论的目的,我们可以将注册类型称为“Cat”和“Dog”。

我在重力形式中添加了Cat / Dog单选按钮,用户可以在其中选择“Dog” - 单选按钮默认为“Cat”。这个字段是'RegisterAs'。

Gravity Form User Registration允许我在新用户上设置角色。我为所有新注册选择'狗'

用于收集新用户数据的重力表单确认将其重定向到cat-or-dog页面: Confirmation

cat-or-dog页面分配了一个模板 - 我们的调用是'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] =&gt; string(6)“cat”}之后:array(1){[0] =&gt;串(6)   “猫”}

所以看起来add_role什么也没做!

任何人都可以更正我的代码吗?或者在用户注册期间,可能还有另一种方法可以在单选按钮上指定角色。

我想使用带有用户注册插件的Gravity Forms,因为它在整个站点中使用,而且我不是插件的收集器。

请注意,我还没有删除'Cat'角色 - 我首先想要克服这个add_role问题。然后我将努力删除角色。

1 个答案:

答案 0 :(得分: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 );

请注意,添加角色'dog'是小写的,即使该角色实际上是正确的'Dog'。

相关问题