Overwrite user role

时间:2016-11-04 作者:Jack Rogers

我们正在使用此注册plugin 作为订阅我们网站的新用户的注册表格。

我们有两(2)种类型的用户:

学生和雇主创建两个具有特定表单的不同页面时,我们将每个表单的用户角色分配给两种类型,以便:

在学生注册表上,用户角色设置为“学生”,在雇主注册表上,用户角色设置为“雇主”

然而,一旦注册,所有注册的用户,无论他们使用何种形式,都会被分配学生角色。

这是因为在“设置”>“常规”中,新的用户默认角色设置为“学生”。

我们希望表单覆盖此默认值,以便注册雇主的人显示为雇主而不是学生。

有什么办法可以做到这一点吗?

1 个回复
SO网友:Benoti

我暂时不使用这个插件,你不需要为每个表单自定义快捷码吗,一个应该是role=“student”,另一个是role=“employer”。

也可以使用过滤器

add_filter( \'simplr_validate_form\', \'my_simplr_validate_form\', 10, 3 );
举个简单的例子,假设注册页面在函数中为学生1个,雇主2个。php:

add_filter( \'simplr_validate_form\', \'my_simplr_validate_form\', 10, 3 );
function my_simplr_validate_form($errors, $data, $atts){
    if(is_page(1)){
        $role = \'student\';          
    }
    elseif(is_page(2)){
        $role = \'employer\';          
    }
    else{
        $role = get_post_meta(get_the_ID(), \'simplr_role_lock\', true);    
    }
    $atts[\'role\'] = $role;

    return $atts;
}
对于最终的错误消息,这是因为post(页面)元键“simplr\\u role\\u lock”与choosen角色不匹配。因此,您可以尝试取消设置$错误

add_filter( \'simplr_validate_form\', \'my_simplr_no_errors\', 10, 3 );
function my_simplr_no_errors($errors, $data, $atts){
    if(is_page(1) || is_page(2)){ 
         unset $errors;
    }      

    return $errors;
}
小心:未经测试!!!