WordPressのログイン画面は、デフォルトの状態ではログイン画面のURLが全て同じです。
以下の2つのアドレス、ドメイン部分を変更してブラウザでたたくと、ログイン画面にアクセスできてしまいます。
https://ドメイン.com/wp-login.php
https://ドメイン.com/wp-admin/
WordPressの乗っ取りやスパムを防ぐため、ログイン画面のURLを変更して、セキュリティの対策を行いましょう。
[手順1]wp-login.phpの代わりとなるPHPファイルを新規作成する
まず、wp-login.phpの代わりとなるPHPファイルを新規作成します。ファイルの名前は任意ですが、PHPファイルの名前がそのままログインURLになります。
※例えば、onigiri.php というファイル名にすると、https://ドメイン.com/onigiri.php がログインURLになります。
PHPファイルの中身はこちらをコピペ。
1 2 3 4 |
<?php define( 'LOGIN_CHANGE', sha1( 'keyword' ) ); require_once './wp-login.php'; ?> |
ふんわり要約すると、「このPHPファイルの内容をwp-login.phpと置き換える」的な内容が書いてあります。
ですので、wp-login.phpは削除せずそのままにしておきます。
新しく作ったファイルは、wp-login.phpと同じ階層に置きます。ちなみにwp-login.phpはrootに存在します。wp-adminなんかのフォルダと同じ位置ですね。
[手順2]function.php に以下を記述
次に、function.phpに以下の内容をコピペします。※function.phpは、テーマフォルダの中にあります→ /wp-content/themes/使用中のテーマ名/function.php
2行目のdefineの行にある‘xxxxxxxx.php’のところには、手順1で作ったファイルの名前を入力してください。(私の例で言うと、onigiri.phpが正解)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
// WordPressの管理画面ログインURLを変更する define( 'LOGIN_CHANGE_PAGE', 'xxxxxxxx.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( 'keyword' ) != LOGIN_CHANGE ) { wp_safe_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' && ( 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; } } |
wp_safe_redirect( home_url() );
この部分で、TOPへリダイレクトしています。
このコピペが完了したら、FTPなどからfunction.phpをアップして上書きします。
これで実際に新しいURLからログインを試してみてください。
問題なくログインできればOKです。
「wp-admin」のディレクトリにBasic認証をかけて2重ロックしてもいいですね。さらに安心です。