将用户从wp-admin(而不是管理员)重定向

时间:2022-01-26 作者:Jed Booth

我想重定向除管理员以外的所有用户,使其远离wp admin页面
如果登录用户尝试访问/wp admin,则他们将被重定向回主页
现在他们看到一个页面,上面写着;抱歉,不允许您访问此页面<你们能帮我在函数中构造一个函数吗。php文件来检查这些条件并重定向<这就是我所拥有的,它并不是为了我想要的。

function acme_login_redirect( $redirect_to, $request, $user  ) {
  return ( is_array( $user->roles ) && in_array( \'administrator\', $user->roles ) ) ? admin_url() : site_url();
}
add_filter( \'login_redirect\', \'acme_login_redirect\', 10, 3 );

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

我是这样做的:

// if admin send them to the dashboard, otherwise leave them on the frontend
add_action(\'wp_login\', \'rt_login_redirect\', 10, 2);  //use this action if you want them to be redirected only after login but leave the ability to to to the dashboard later (ie changing profile or pw).
add_action( \'admin_init\', \'rt_login_redirect\' ); // use this action to completely dis-allow all others besides the admin to access the dashboard.
function rt_login_redirect($user_login, $user) {

    if  (!current_user_can(\'manage_options\')) {
            wp_safe_redirect( home_url(), 302);
            exit();
    }
}
主要功能通过检查用户是否有能力管理选项来检查用户是否是管理员。如果他们没有该功能,那么该功能会将他们重定向到主页。如果他们这样做了,他们可以留在后端。

当有人尝试采取行动(如上所述)时,该功能将被激活(根据您的需要选择一个选项)