SiteGuard WP Plugin でログイン画面やコメントの画像認証をオンにしていると、ランダムに表示される png 画像が見つからない File not found のエラーがサーバーのエラーログに出るようになりました。
/plugins/siteguard/really-simple-capcha/tmp/ランダムな9桁の数字.png
WordPress.org のフォーラム トピック: SiteGuard WP Pluginのエラーアラートの読み方 と全く同じ現象ですが、解決方法はなさそうです。
トピックを投稿された方のサーバー環境は mixhost、私のレンタルサーバーはカラフルボックスなので、もしかすると LiteSpeed サーバーで起こる現象かもしれません。※ カラフルボックスにサーバーを移転した記事は、こちら をご覧ください。
SiteGuard WP Plugin は、ログインアラート(ログインがあったことをメールで通知)の機能とログイン時の画像認証しか使用していなかったのと、組み込まれている really-simple-capcha のアップデートは今後無さそうなので、代替として「ログインメール通知」のコード作成と「2段階認証」のプラグインを導入しました。
ログインメール通知(アラート)のコード
このブログの管理人は私一人なので、「ログインメール通知」は必要なのかな?と思いましたが、もしログインされた場合に備え、関数リファレンス/wp mail - WordPress Codex 日本語版 を参考に、WordPress の wp_mail
関数を使って書いてみました。
WordPress のバージョン 5.0、php7 の環境で動作しています。
function login_notify ( $user_login ) {
$website = 'KEN-G.COM';
$datetime = current_time( 'Y-m-d D H:i' );
$getip = $_SERVER['REMOTE_ADDR'];
$ua = $_SERVER['HTTP_USER_AGENT'];
$email = get_option('admin_email');
$subject = ''.$website.'にログインがありました';
$headers = array (
'From: '.$website.' <'.$email.'>',
'Content-Type: text/html; charset=UTF-8',
);
$message = '<html><body>'.$datetime.' に '.$user_login.' がログインしました。<br><br>IPアドレス:'.$getip.'</br>ユーザーエージェント:'.$ua.'</body></html>';
wp_mail( $email, $subject, $message, $headers );
}
add_action( 'wp_login', 'login_notify', 10, 1 );
KEN-G.COM
の部分は、ウェブサイト名で、メールの件名に表示されます。
ウェブサイト名を変更後、WordPress のテーマの function.php などに追記すればOKです。
メールアドレスは、WordPress の管理画面のプロフィールに登録されているメールアドレスに送信されます。
WordPress の管理画面にログインした時点で、wp_mail
で送られてくるメールの件名は、「KEN-G.COMにログインがありました」で、メールの本文は以下のようになります。
2018-12-17 Mon 21:00 に admin がログインしました。
IPアドレス:10.0.1.1
ユーザーエージェント:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0.2 Safari/605.1.15
WordPress管理画面へのログインを2段階認証に

WordPress の Jetpack の機能「シングルサインオン」を使うのが手軽で良いのですが、Jetpack はインストールしていないので、WordPress の開発者の方がリリースしている Two-Factor プラグインを導入しました。
現時点でベータ版ですが、問題はなさそうです。
認証方法は、メールアドレス、ワンタイムパスワード(Google Authenticator)、Universal 2nd Factor になります。

Two-Factor プラグインを有効後、ユーザー
メニューの あなたのプロフィール
ページに Two-Factor Options
が追加され認証方法を選択可能です。
Google Authenticator などの2段階認証のアプリで、QRコードを撮影するか表示されている文字列を入力すれば、アプリ側での登録は完了です。
最後に、アプリ上で表示されている数字を WordPress側の Authentication Code
に入力して Submit
すれば登録が完了します。
2段階認証は、ログインの際に毎回アプリを起動して数字をコピーするのは手間がかかりますね。
パスワードの管理を 1Password でされている方は、新規フィールドの種類を ワンタイムパスワード
にして設定すれば、自動でワンタイムパスワードをクリップボードにコピーしてくれます。 ※ 他のパスワード管理アプリでも可能かと思います。
最後に
SiteGuard WP Plugin のプラグインを使用する以外で、メール通知アラートを実行する具体的なコードはなかったので、書いてみました。参考にして頂けたら幸いです。