如何定位特定的用户角色?

时间:2013-07-11 作者:Mayeenul Islam

我正在尝试放置一组简单的代码,以便在登录后仅将“订阅者”重定向到主页(或所需页面)。我想用if( current_user_can(\'read\') ):, 但这是一种全球能力,也适用于所有其他角色。所以我试过了get_role(\'subscriber\'). 这是我的functions.php 代码(感谢Len):

function subscriber_redirection() {
    global $redirect_to;
    if( get_role(\'subscriber\') ) {
        if ( !isset( $_GET[\'redirect_to\'] ) ) {
            $redirect_to = get_option(\'siteurl\');
        }
    }
}
但它也在重定向管理员!

  • How can I target only a specific user role for a purpose?

2 个回复
最合适的回答,由SO网友:s_ha_dum 整理而成

get_role 只是要返回有关角色的信息。它不会告诉您当前用户是否具有该角色。使用wp_get_current_user 用这样的支票:

function subscriber_redirection() {
    global $redirect_to;
    $user = wp_get_current_user();
    if (in_array(\'subscriber\',$user->roles)) {
        // user has subscriber role
        if ( !isset( $_GET[\'redirect_to\'] ) ) {
            $redirect_to = get_option(\'siteurl\');
        }
    }
}
我不知道你为什么用global $redirect_to; 但永远不要对变量执行任何操作。

SO网友:Stephan Vierkant

“get\\u role”返回一个对象,而不是布尔值:http://codex.wordpress.org/Function_Reference/get_role

// for example: if the user can not moderate comments
if (!current_user_can(\'moderate_comments\') ) {

//redirect

}
您可以在此处找到所有功能:http://codex.wordpress.org/Roles_and_Capabilities

结束