ログインURLをwp-login.phpから変更しても、URL/loginからリダイレクトされる

WordPressで、パーマリンクをデフォルトから変更している場合、URL/loginからURL/wp-login.phpへリダイレクトする仕組みになっている。またURL/adminとURL/dashboardはURL/wp-admin/へリダイレクトされる。

wp-includes/canonical.phpにある、wp_redirect_admin_locations関数で定義されている。


function wp_redirect_admin_locations() {
    global $wp_rewrite;
    if ( ! ( is_404() && $wp_rewrite->using_permalinks() ) )
      return;

    $admins = array(
        home_url( 'wp-admin', 'relative' ),
        home_url( 'dashboard', 'relative' ),
        home_url( 'admin', 'relative' ),
        site_url( 'dashboard', 'relative' ),
        site_url( 'admin', 'relative' ),
    );

    if ( in_array( untrailingslashit( $_SERVER['REQUEST_URI'] ), $admins ) ) {
        wp_redirect( admin_url() );
        exit;
    }

    $logins = array(
        home_url( 'wp-login.php', 'relative' ),
        home_url( 'login', 'relative' ),
        site_url( 'login', 'relative' ),
    );

    if ( in_array( untrailingslashit( $_SERVER['REQUEST_URI'] ), $logins ) ) {
        wp_redirect( site_url( 'wp-login.php', 'login' ) );
        exit;
    }
}

add_action( 'template_redirect', 'wp_redirect_admin_locations', 1000 );

この関数の機能により、管理画面のURLを失念した場合でもアクセスできる。一方で、管理画面やログインURLを隠蔽したい場合、この機能は無効にしたいかもしれない。

URL/loginからのリダイレクトを無効にする方法

この機能を無効にする方法がある。いくつか紹介する。A, B, C のいずれか一つを実行すれば良い。

A. login, admin, dashboard というスラッグで固定ページを作る

B. デフォルトパーマリンクを使用する

wp_redirect_admin_locations関数は、is_404()「ページが存在しない」かつusing_permalinks「パーマリンクをカスタマイズしている」の場合にのみ実行される。なので、あらかじめ固定ページを作る、あるいはパーマリンクをデフォルトにすることにより、この関数を実行しないようにできる。

C. アクションフックを無効にする

template_redirectアクションフックにwp_redirect_admin_locations関数が登録されている。なので、remove_actionを使用してフックを取り除けば良い。


remove_action( 'template_redirect', 'wp_redirect_admin_locations', 1000 );

と、テーマのfunctions.php等に記述する事で、意図しないリダイレクトを行わなくすることができる。

新着ブログ記事
ウェブ集客

クイズ、計算式など、ホームページ訪問者の興味・関心・満足度を高めるコンテンツを提供する仕組み。一度来てくださった方の再訪問率を高める。

濃い見込み客を見つけるホームページ自動見積もりシステム

自動見積計算と見積PDF作成を行うサービスです。濃い見込み客を抽出する仕組みで、御社のホームページを営業マンにします。

否定で終わらないウェブメディア

弊社運営のウェブメディアでは、否定レビューで終わらない仕組みを導入しています。