好的,那么你的第一个问题是$current_user->roles
是数组而不是字符串,因此您的条件将不为true;)
我的另一个担心是你用的钩子。一些插件可能会将其用于其他目的,杀死脚本可能是有害的。和有更好的钩子;)
第一种解决方案:使用login_redirect
挂钩
function my_login_redirect( $redirect_to, $request, $user ) {
//is there a user to check?
global $user;
if ( isset( $user->roles ) && is_array( $user->roles ) ) {
if ( in_array( \'jsa_contributor\', $user->roles ) ) {
// redirect them to the default place
$data_login = get_option(\'axl_jsa_login_wid_setup\');
return get_permalink($data_login[0]);
} else {
return home_url();
}
} else {
return $redirect_to;
}
}
add_filter( \'login_redirect\', \'my_login_redirect\', 10, 3 );
但您必须记住,此代码只有在登录后才会重定向用户。它不会限制用户访问wp admin。
如果这些用户不能访问wp admin,那么您应该使用另一种方法。。。
第二种解决方案:限制wp admin访问
function my_restrict_wpadmin_access() {
if ( ! defined(\'DOING_AJAX\') || ! DOING_AJAX ) {
$user = wp_get_current_user();
if ( isset( $user->roles ) && is_array( $user->roles ) ) {
if ( in_array(\'jsa_contributor\', $user->roles) ) {
$data_login = get_option(\'axl_jsa_login_wid_setup\');
wp_redirect( get_permalink($data_login[0]) );
die;
}
}
}
}
add_action( \'admin_init\', \'my_restrict_wpadmin_access\' );