ログイン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, true ) ) {
		wp_redirect( admin_url() );
		exit;
	}

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

	if ( in_array( untrailingslashit( $_SERVER['REQUEST_URI'] ), $logins, true ) ) {
		wp_redirect( wp_login_url() );
		exit;
	}
}

この関数は、wp-includes/default-filters.php内で、template_redirectアクションフックで実行するように登録されている。

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作成を行うサービスです。濃い見込み客を抽出する仕組みで、御社のホームページを営業マンにします。

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

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