Plug-in "Force Email Login" to restrict Wordpress login to email addresses (disable login with username)

ログインをメールアドレスに限定する(ユーザー名でのログインを無効にする)プラグイン「Force Email Login」

公開日: セキュリティ

WordPressサイトの不正ログイン対策、何かしてますか??何もしてない?とっても危険だと思いますよ!!

サイトが動作しているサーバーへログインされてしまえばもちろんおしまいなお話ではあるのですが、サイトはサイトでできる限りの対策はしておきたいものです。

サーバー乗っ取りを除外して考えられる一番の対策はログイン画面へのアクセスを自身が接続する環境以外拒否すること。これをすればいつもログインする場所へ侵入されない(自宅なら泥棒などが侵入しない)限りログインは不可能になります。

そして次に挙げられるのが、

というプラグインを使って作者の記事一覧のURL末尾に表示される「ユーザー名」を他の文字列に変更すること。これも結構効果的です(経験上これで設定した偽ユーザー名でログインを仕掛けてくる輩がたくさんいました)。これにメールアドレスでのログインを拒否する設定を追加すれば結構堅牢なのではないかと思います。

今回紹介する「Force Email Login」は逆転の発想で、ユーザー名がそのまま作者の記事一覧のURL末尾に表示されてしまうのなら、ユーザー名でのログインを無効にしてしまえばいい!というプラグイン。前述した「Edit Author Slug」プラグインで作者一覧のスラグが変わってしまうことに不都合がある場合には良いと思います。

この紹介記事を最後に編集したときの環境・バージョンなど

プラグインは製作者によって日々更新されていくため、この紹介記事が最新バージョンのものであるとは限りません。参考までにこの記事の最終更新日時点におけるテスト環境、プラグインバージョン、プラグイン導入時の留意点などを記載しておきます。

プラグインを使用(試用)したテスト環境

  • テストサーバー:カラフルボックス
  • WordPressのバージョン:5.3
  • PHPのバージョン:7.3.11
  • テーマ:ha-Basic(オリジナルテーマ)
  • プラグインのバージョン:本記事で紹介しているバージョン0.6.0/最新バージョン 0.6.0
  • 公式サイト(wordpress.org上):
  • 公式サイト(作者サイト):

本記事を参考にWordPressサイトへプラグインの導入を検討される方へ

WordPressは古くから無料で配布されているサイト作成ツール(CMS)で、随時改良が加えられており、さまざまなバージョンが存在します。

さらにWordPressを動かすためのプログラムであるPHP、サイトのデータを保存しておくためのデータベースについても様々なバージョンがあります。

そしてWordPress本体同様にプラグインについてもさまざまなバージョンが存在します。

本記事を参考にプラグインの導入をお考えの方は、以下に留意の上でインストールするようにしてください。

  • テスト環境での動作に基づいた紹介記事ですので、すべての環境で正常に動作するかどうかは不明です
    ※本記事の内容についてはページ内に記載しているプラグインバージョンのものになります。現在のバージョンと異なる場合、機能などが異なる場合があります。
    ※また、テスト環境、テストしたプラグインバージョン等の表示が本文内にない場合、ページタイトル下にある最終更新日当時の情報となりますので、現在のバージョンでは全く違う機能となっているかも知れません。
  • プラグインに無料版と有料版(Pro版)がある場合、特に記載がなければ無料版の情報のみを紹介しています
  • このページでプラグインを使用する際に必要なショートコードやコードなどは、コピーして使用することができますが、環境によっては記号などが文字化けすることがあります。コピーしたのに動作しない場合は特に「”」「’」などの記号を入力し直してみてください。
  • プラグイン本体の動作不具合や質問などは公式サイトのフォーラムなどで行ってください(ここでは質問にお答えすることはできません)

【Force Email Login】プラグインの設定画面や表示の日本語化と翻訳

【Force Email Login】プラグインは設定項目がないため翻訳の必要はありません。

【Force Email Login】プラグインのインストールと設定

インストール方法

インストールはプラグインの新規追加でプラグイン名を入力して検索してインストールするか、WordPressのプラグイン公式配布ページからダウンロード後、管理画面からアップロードインストールしてください(プラグインの公式ページは本ページ内記載のリンクをクリック、もしくは、WordPress公式サイトで検索してください)。

WordPressを使い始めて間もない方(初心者の方)は、より詳細なプラグインのインストール手順や、インストール時に起こる問題などへの対処方法をまとめた【WordPress】プラグインのインストール&追加方法とエラー対処の方法も併せてご覧ください。

基本的な設定方法や使い方

設定はありませんので、有効化すればすぐに使用できます。

※「WordPress ログイン メール 限定」などのキーワードでググるとfunctions.phpへコピーして行う方法の紹介記事が多数出てきます。基本的にこのプラグインは同じで

  • 入力されたメールアドレスと合致するユーザー名を探す
  • メールアドレスをユーザー名に置き換えてログイン試行する

という動作をします。どちらの方法でもいいとは思いますが、個人的には機能を有効/無効にするのがfunctions.phpへ直書きするコードよりもプラグインのON/OFFで簡単にできる点で【Force Email Login】をおすすめします。

【Force Email Login】プラグインの便利な使い方・カスタマイズ方法など

より便利に使うカスタマイズ技やテストサイトで使用した結果や感想、WordPressのプラグイン公式配布ページには書かれていない事柄などを紹介します。

このプラグインを有効化してもログイン画面の文字列はそのままです。不都合が出るのは

  • ユーザー名またはメールアドレス
  • エラー: ユーザー名を入力してください。
  • エラー: そのユーザーネームまたはメールアドレスのアカウントは存在しません。
  • エラー: 無効なユーザー名かメールアドレス、または間違ったパスワードです。

の4つかと思います。これらをそれぞれ以下のように変更するコードを紹介しておきますので、テーマのfunctions.phpへコピペして利用ください。

  • メールアドレス
  • 空欄(何も表示しない)
  • ログインに失敗しました
  • ログインに失敗しました

ご自身の環境に合わせて変更する場合にはコード中の「ログインに失敗しました」などを書き換えればOKです。
※今表示されている文字列を任意のものに変更するためのコードですので、ログイン画面以外の文字列もこのコードに明細追加するだけで変更できるようになって便利なコードです。

/********** ログイン画面の文字列を変更 **********/
function custom_gettext( $translated, $text, $domain ) {
$custom_translates = array(
'default' => array(
'ユーザー名またはメールアドレス' => 'メールアドレス',
'<strong>エラー</strong>: ユーザー名を入力してください。' => '',
'<strong>エラー</strong>: そのユーザーネームまたはメールアドレスのアカウントは存在しません。' => 'ログインに失敗しました',
'<strong>エラー</strong>: 無効なユーザー名かメールアドレス、または間違ったパスワードです。' => 'ログインに失敗しました'

)
);
if ( isset( $custom_translates[$domain][$translated] ) ) {
$translated = $custom_translates[$domain][$translated];
}
return $translated;
}
add_filter( 'gettext', 'custom_gettext', 10, 3 );

function trans_custom_gettext() {
$args = func_get_args();
$translated = $args[0];
$text = $args[1];
$domain = array_pop( $args );
$translated = custom_gettext( $translated, $text, $domain );
return $translated;
}
add_filter( 'gettext_with_context', 'trans_custom_gettext', 10, 4 );
add_filter( 'ngettext', 'trans_custom_gettext', 10, 5 );
add_filter( 'ngettext_with_context', 'trans_custom_gettext', 10, 6 );

WordPressのカスタマイズ・不具合対応などご相談ください

Wordpressのカスタマイズ、不具合解消のご相談はすべてココナラのダイレクトメッセージからお受けしております。まずはこちらのバナーからお気軽にお問い合わせください。