我正在构建一个插件,无意中发现了codex中login\\u重定向过滤器的页面,在那里我发现了一个特殊的示例:
function my_login_redirect( $redirect_to, $request, $user ) {
//is there a user to check?
if ( isset( $user->roles ) && is_array( $user->roles ) ) {
//check for admins
if ( in_array( \'administrator\', $user->roles ) ) {
// redirect them to the default place
return $redirect_to;
} else {
return home_url();
}
} else {
return $redirect_to;
}
}
add_filter( \'login_redirect\', \'my_login_redirect\', 10, 3 );
我的问题是,为什么在检查所需的值是否位于数组中之前,检查是否设置了用户角色以及输出是否为数组很重要?
据我所知,每个用户都有一个默认角色,roles属性是WPUser类参考页上提到的数组数据类型(https://codex.wordpress.org/Class_Reference/WP_User -> 在公共属性下进行检查)。
总而言之,我们不能简单地做如下事情:
if (in_array(\'administrator\', $user->roles)) {
return $redirect_to;
} else {
return $home_url;
}
编程是否有一些概念性的东西我遗漏了?