找出这样一个问题的根源是最好的方法。字面上
进去看看wp-login.php
并查找在任何HTML呈现发生之前激发的操作。你要找的钩子是login_init
. 向其添加回调,检查用户是否已登录,如果已登录,则重定向用户。
这里唯一的另一个障碍是wp-login.php
还处理注销。所以你需要检查global $action
变量以确保未进行注销。
add_action(\'login_init\', \'wpse187831_redir_loggedin\');
function wpse187831_redir_loggedin()
{
global $action;
if (\'logout\' === $action || !is_user_logged_in()) {
return;
}
wp_redirect(apply_filters(
\'wpse187831_loggedin_redirect\',
current_user_can(\'read\') ? admin_url() : home_url(),
wp_get_current_user()
), 302);
exit;
}
还有一些额外的东西:
呼叫apply_filters
因此,如果其他插件愿意,它们可以挂接并修改我的重定向。此筛选器获取重定向本身以及当前用户在将当前用户重定向到管理区域之前,需要检查当前用户是否可以访问管理区域这是一个小片段as a plugin.