之前写了一篇文章,介绍的是如何优化 WordPress 默认登陆界面的 UI,现在我们就来侃侃 WordPress 登陆后的那些事。大家都知道的 WordPress 不管任何用户只要在登陆后都会转跳到后台管理界面/wp-admin/这个页面,对于普通的用户来说这是非常糟糕的,因为默认的管理界面什么内容也没有,那么我们怎么来控制 WordPress 登陆后所转跳的页面呢?其实 WordPress 强大的 hook 就可以做到这点,仅仅需要在 functions.php 中写入几行代码而已。

function my_login_redirect( $redirect_to, $request, $user ){
    //验证用户
    if( is_array( $user->roles ) ) {
       //验证超级管理员
       if( in_array( "administrator", $user->roles)){
           // 如果的超级管理员则返回后台管理主页
           return home_url( '/wp-admin/' );
       } else {
           //否则跳转以网站首页
           return home_url();
       }
    }
}
add_filter("login_redirect", "my_login_redirect", 10, 3);

虽然这样可以把登陆后的用户转跳到网站首页但是这些用户通过链接仍然访问到网站后台的管理页面,我们可以对后台做一个访问锁定,只允许管理员访问网站管理界面。

/********锁定后台****/
function redirect_user_login() {
    global $current_user,$pagenow;
    get_currentuserinfo();
    $valid_pages = array('admin-ajax.php', 'async-upload.php', 'media-upload.php');
    if( !current_user_can('administrator') && !in_array( $pagenow, $valid_pages ) ){
        wp_redirect( wxd_my_account_link() ); exit;
    }
}
add_action('admin_init','redirect_user_login');

这样就可以限制非管理员用户对后台的访问了。