ごきげんよう
今回は、Login rebuilderをやめてプラグイン無しで独自ログインURLを実装した話をしたいと思う。
1. 諸事情でLogin rebuilderをやめる
以前からLogin rebuilderという、簡単にログインページを変更してセキュリティを向上させるプラグインを使っていました。
source:
Login rebuilder:プラグイン作ってみました – WordPress私的マニュアル
扱いやすかったのですが、私の環境がちょっと特殊なためか動作しなくなったようで、さてこれは使えなくなったぞどうしようという状態になりました。
動かなくなるとそもそもログインできない系。バックアップとっていたものから復活させてプラグイン止めた。
さて、そうなるともうプラグイン無しで実装したほうが良いと思いまして探してみたところ。
・.htaccessを書き換えるパターン
・function.phpと新しいログイン用phpファイル(ここではlogin-test.phpとでもしておきましょう)
のどちらかということがわかりました。
レンタルサーバーの場合は、.htaccessを書き換えるのが面倒ってことがあるので却下。あまり触りたくないし肥大化もさせたくない。
ということでPHP側で解決してしまいます。
まあ、この方法は仕事でもWEBを触っているので知っているんですが、プライベートではあまりやる気を出していないんですよね。
今回はやります。
2. 実際に独自ログインURLを実装してみた
さて、PHP側で独自ログインURLに変更してみよう。
触るのはfunction.phpと新しいログイン用phpファイルです。
function.phpはバックアップを取ってから修正しましょう。
・新しいログイン用phpファイル(ここではlogin-test.phpとでもしておきましょう)
login-test.php
1 2 3 4 | <?php define( 'LOGIN_CHANGE', sha1( '[任意の文字列]' ) ); require_once './wp-login.php'; ?> |
[任意の文字列]のところを入力して保存。
・function.php側の追加部分
function.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 32 33 34 | // WordPressの管理画面ログインURLを変更 define( 'LOGIN_CHANGE_PAGE', 'login-test.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( '[任意の文字列]' ) != 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' && ( 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; } } |
[任意の文字列]はlogin-test.phpで指定した任意文字列と同じものを設定。
下記を参考に一部書き換えました。ありがたや。
source:
WordPressのログインURL変更方法!プラグインを使わない場合も解説 | ワードプレス初心者向け情報サイト『webcode』
3. 最後に
今回は、Login rebuilderをやめてプラグイン無しで独自ログインURLを実装した話をしてみた。
探せば見つかる。function.phpはバックアップを取ってから修正しましょう。
それでは ごきげんよう