(WordPress) 管理画面へのアクセスを禁止して公開側画面にリダイレクトする

WordPress で管理画面へのアクセスを禁止して公開側画面にリダイレクトする方法をメモ。

コード

/**
 * ログイン時に管理者権限以外のユーザはリダイレクトさせる
 *
 * @param string $user_login
 * @param array $user
 *
 */
function obturator_fascia_login_redirect( $user_login, $user ) {
    if ( 'administrator' !== $user->roles[0] && 'semiadmin' !== $user->roles[0] ) {
        wp_safe_redirect( home_url(), 301 );
        exit();
    }
}
add_action( 'wp_login', 'obturator_fascia_login_redirect', 10, 2 );

/**
 * ログアウト時に管理者権限以外のユーザはリダイレクトさせる
 *
 */
function obturator_fascia_logout_redirect() {
    if ( ! current_user_can( 'administrator' ) && ( ! defined( 'DOING_AJAX' ) || ! DOING_AJAX ) ) {
        wp_safe_redirect( home_url(), 301 );
        exit;
    }
}
add_action( 'wp_logout', 'obturator_fascia_logout_redirect', 10, 2 );

/**
 * 管理画面アクセス時に管理者権限以外のユーザはリダイレクトさせる
 *
 */
function obturator_fascia_restrict_admin() {
    if ( ! current_user_can( 'administrator' ) && ( ! defined( 'DOING_AJAX' ) || ! DOING_AJAX ) ) {
        wp_safe_redirect( home_url(), 301 );
        exit;
    }
}
add_action( 'admin_init', 'obturator_fascia_restrict_admin', 1 );

これで以下のことをすることができます。なお、今回はいずれも管理者権限以外、という条件付きです。

  • ログイン時に管理画面ダッシュボードではなく公開側画面へリダイレクト
  • ログアウト時に管理画面ダッシュボードではなく公開側画面へリダイレクト
    • ログイン画面を(ある程度)隠蔽する
  • 管理画面アクセス時に公開側画面へリダイレクト

参考

この記事を書いた人

アルム=バンド

フロントエンド・バックエンド・サーバエンジニア。LAMPやNodeからWP、Gulpを使ってejs,Scss,JSのコーディングまで一通り。たまにRasPiで遊んだり、趣味で開発したり。