之前寫了一篇文章,介紹的是如何優化 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');

這樣就可以限制非管理員用户對後台的訪問了。