セキュリティ対策のため、あるいは、主に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]が使えることが条件です。
以上。必要になるケースは稀かと思いますが、上記コードを使用の際は、充分にテスト・検証を行ってください。