WordPressでユーザーのログイン時にメール通知を送る方法

WordPress
WordPress
B!

WordPressを複数人で運用している場合、誰がいつログインしたかを把握しておくことは、セキュリティ面でも管理面でも非常に重要です。

今回は、WordPressでユーザーがログインした際に、管理者に自動でメール通知が届くようにするカスタマイズ方法をご紹介します。


機能概要

このカスタマイズを導入することで、以下の情報がメールで送られるようになります。

  • ログインしたユーザー名
  • そのユーザーの権限(administrator、editorなど)
  • ログイン日時
  • IPアドレス
  • サイト名・URL

実装方法

以下のコードを、テーマの functions.php または独自プラグイン内に追加します。

add_action('wp_login', 'notify_admin_on_login', 10, 2);

function notify_admin_on_login($user_login, $user) {
    $to = get_option('admin_email');
    $site_name = get_bloginfo('name');
    $site_url  = home_url();

    $ip_address = $_SERVER['REMOTE_ADDR'];
    $login_time = current_time('mysql');
    $roles      = implode(', ', $user->roles);

    $subject = "[{$site_name}] ログイン通知: {$user_login}";
    $message = <<<EOD
以下のユーザーがログインしました。

■ サイト: {$site_name}
■ URL: {$site_url}
■ ユーザー名: {$user_login}
■ 権限: {$roles}
■ ログイン日時: {$login_time}
■ IPアドレス: {$ip_address}
EOD;

    wp_mail($to, $subject, $message);
}

通知の例(メール本文)

以下のユーザーがログインしました。

■ サイト: サンプルサイト
■ URL: https://example.com
■ ユーザー名: takuofukao
■ 権限: administrator
■ ログイン日時: 2025-06-04 01:25:00
■ IPアドレス: 123.123.123.123

注意点と補足

  • 管理者メールアドレスは「設定」→「一般設定」で変更可能です。
  • メール送信には WordPress の wp_mail() 関数を使用しています。
  • サーバーがメール送信できるように設定されている必要があります(sendmail、SMTPなど)
  • IPアドレスは $_SERVER['REMOTE_ADDR'] から取得しています。CDNやプロキシ利用時は HTTP_X_FORWARDED_FOR なども考慮する必要があります。

応用のアイデア

  • 管理者だけでなく特定のロールに対して通知対象を制限する
  • 通知内容をHTML形式にする
  • ログイン失敗時の通知(wp_login_failed)も追加して監視を強化

まとめ

WordPressにおけるログイン通知の自動化は、システム監視とセキュリティ強化に大きく貢献します。メール通知は最も導入しやすく、すぐに実用化できる手段の一つです。

必要に応じてSlack連携やChatwork通知と組み合わせることで、管理体制の一元化も可能です。運用スタイルにあわせてぜひ導入をご検討ください。

B!
← 一覧へ戻る