2012-09-13 54 views
0

使用WordPress - 我想检查谁刚刚登录,如果他们是UsernameX,则重定向到PageX,如果他们是管理员,则重定向到/ wp-admin /,所有其他人重定向到HOME_URL();根据用户名登录后重定向用户

这是我的代码:

function my_login_redirect($redirect_to, $request, $user){ 
    if(in_array('student',$user->user_login)) { 
     return home_url("/students/"); 
    } else { 
     if(in_array('administrator', $user->roles)){ 
      return home_url("/wp-admin/"); 
     } else { 
      return home_url(); 
     } 
    } 
} 
add_filter("login_redirect", "my_login_redirect", 10, 3); 

但是它似乎并没有工作 - 特别是对USER_LOGIN检查。有没有更好的工作方式来做到这一点?


接听/正确的代码 - 感谢@soju:

function my_login_redirect($redirect_to, $request, $user){ 
    if($user->first_name == 'student')) { 
     return home_url("/students/"); 
    } else { 
     if(in_array('administrator', $user->roles)){ 
      return home_url("/wp-admin/"); 
     } else { 
      return home_url(); 
     } 
    } 
} 
add_filter("login_redirect", "my_login_redirect", 10, 3); 

这意味着使用该用户的名字为$用户不包含用户名,但如果你希望你能得到它使用由$用户返回的ID我猜。

回答

1

这条线:

if(in_array('student',$user->user_login)) { 

是不正确的,$user->user_login不存在,并且不是一个数组。

编辑:http://codex.wordpress.org/Class_Reference/WP_User

+0

感谢烧酒 - 你知道在哪里/有一个链接到全球$ USER的内容是什么?我一直在搜索代码,但找不到它。 – phil

+1

看看这里:http://codex.wordpress.org/Class_Reference/WP_User – soju