Wordpress Logo

セキュリティ対策のため、あるいは、主に1人で管理している WordPress サイトでは、パスワードの再発行機能が不要なことがあります。

そこで、この機能自体を無効にする方法をいくつか調べてみました。

単純に[wp-login.php]に手を加えれば解決しそうですが、WordPress のアップグレードの際、仕様が変更になりエラーが発生する可能性があります。そこで、「WordPress を構成するコアファイルには手を触れずに、なるべくテーマファイルの中だけで完結できること」を条件として設定します。

CSS で表示を消してみる。

とりあえずスタイルシートを使って表示を消してみましょう。
試しに下記コードを[functions.php]に追加します。

function login_css() {
	echo '#login #nav{display:none;}'."n";
}
add_action('login_head', 'login_css');

このコードを書き加えると、[wp-login.php]の <head>〜</head> に CSS が追加されます。

見た目は確かにリンクの表示は消えますが、ソースにはコードが残っているのでパスワードの再発行機能自体は生きています。
これでは無意味なので別の角度からのアプローチを。

メールを送信されなくする。

下記コードを[functions.php]に追加します。

function disable_password_reset() {
	return false;
	}
add_filter ( 'allow_password_reset', 'disable_password_reset' 

これにより、パスワード再発行画面で、メールアドレスを入力して「新しいパスワードを取得」をクリックしてもメールが送信されなくなります。

[.htaccess]でリダイレクトさせる

最後に、最も強力な方法をご紹介。

[.htaccess]を利用してリダイレクトさせる方法です。
URLが「wp-login.php?action=lostpassword」ならば、「wp-login.php」にリダイレクトさせます。

RewriteEngine On
RewriteCond %{QUERY_STRING} ^action=lostpassword$
RewriteRule ^wp-login.php$ wp-login.php? [R=301,L]

この方法はサーバーで[mod_rewrite]が使えることが条件です。


以上。必要になるケースは稀かと思いますが、上記コードを使用の際は、充分にテスト・検証を行ってください。