WordPressで管理者用のログインURLを変更する手順を備忘録として残します。
そもそもURLを変更する意味とは?

自身のサイトの管理者専用ログイン画面はデフォルトだと下記のURLになっていると思います。
https://<ドメイン名>/wp-login.php
マーカーで示した「wp-login.php」は他のサイト管理者でもデフォルトは共通であるため、変更していない場合は誰でも容易に管理者画面に辿りつけてしまうという訳です。
WordPress導入後、2段階認証もデフォルトでは設定されていないですし、不正ログインをされる可能性は非常に高くなります。
なので、上記の「wp-login.php」の部分を変更する方法を下記に記載しました。
プラグインなしでURLを変更
プラグインを使用する方法が最も簡単ですが今回はプラグインなしの方法についてまとめます。
操作は実際のWordPressをインストールしたサーバーとやり取りするためFTPソフトなどを使用する必要があります。
もしレンタルサーバーを利用中であれば、そのユーザーページからFTPを使用できるかも?
- 1「wp-login.php」の代わりになるPHPファイルを作成する
- 2「functions.php」を編集する
- 3上記の2つのファイルをサーバーに配置する
「wp-login.php」の代わりになるPHPファイルを新規作成する
新たに「wp-login.php」の代わりになるPHPファイルを作成します。
このファイル名が「wp-login.php」の部分になるため、複雑な名前にすることをお勧めします。
ファイル内には以下を記述します。
2行目の”keywordtest”は独自のキーワードに変更してください。
今回は「test-login.php」としてファイルを保存します。
<?php
define( 'LOGIN_CHANGE', sha1('keywordtest') );
require_once './wp-login.php';
?>「functions.php」を編集する
編集する「functions.php」は”/wp-content/themes/<テーマ名>/”配下に存在します。
編集前にファイルはローカルなどにバックアップしておきましょう。
※例えば、WordPressテーマ「Cocoon」の子テーマを使用している場合、
“/wp-content/themes/cocoon-child-master/”というパスになるはずです。
ファイル内の最後に下記を追記します。
2行目および12行目は自身で作成したファイル名とキーワードに修正します。
//ログイン画面URL変更
define('LOGIN_CHANGE_PAGE', 'test-login.php');
add_action('login_init', 'login_change_init');
add_filter('site_url', 'login_change_site_url', 10, 4);
add_filter('wp_redirect', 'login_change_wp_redirect', 10, 2);
// 指定ログインURL以外はTOPページへ転送
if (! function_exists('login_change_init')) {
function login_change_init()
{
if (!defined('LOGIN_CHANGE') || sha1('keywordtest') != LOGIN_CHANGE) {
wp_redirect(home_url());
exit;
}
}
}
// ログイン済み・新規作成ログインURLの場合はwp-login.phpを置換
if (! function_exists('login_change_site_url')) {
function login_change_site_url($url, $path, $orig_scheme, $blog_id)
{
// ログイン画面、ログイン画面を用いた処理の画面名をリプレイス
if (($path == 'wp-login.php' || preg_match('/wp-login\.php\?action=\w+/', $path)) &&
(is_user_logged_in() || strpos($_SERVER['REQUEST_URI'], LOGIN_CHANGE_PAGE) !== false)
)
$url = str_replace('wp-login.php', LOGIN_CHANGE_PAGE, $url);
return $url;
}
}
// ログアウト時のリダイレクト先
if (! function_exists('login_change_wp_redirect')) {
function login_change_wp_redirect($location, $status)
{
if (strpos($_SERVER['REQUEST_URI'], LOGIN_CHANGE_PAGE) !== false)
$location = str_replace('wp-login.php', LOGIN_CHANGE_PAGE, $location);
return $location;
}
}編集した2つのファイルをサーバーに配置する
編集した下記の2ファイルをそれぞれのディレクトリへ配置します。
※直接編集している場合はそのまま保存でOK!
| ファイル名 | 保存先 |
|---|---|
| test-login.php | 「wp-login.php」と同じ階層に保存。 ※ルートディレクトリに存在するはず |
| functions.php | /wp-content/themes/<テーマ名>/ |
あとは管理者ログイン画面が編集したファイル名になっていればOK!
サンプルで作ったファイル名だと以下になります。
https://<ドメイン名>/test-login.php
まとめ
プラグインなしでログインURLを変更する方法はネットで沢山見つかるので他の方の記事も参考にすることをお勧めします(実際コピペするだけだとうまく動かず、いくつかの記事を見て回りようやくうまく動いたので…)