WordPressでユーザーがログインした際にChatworkへ通知を送る方法

WordPress
WordPress
B!

複数のWebサイトを運用していると、それぞれのWordPressに誰が・いつログインしたのか把握するのが難しくなることがあります。特に管理者アカウントへの不正アクセス対策や、運用チーム間の連携を強化したい場合は、ログイン情報を外部に通知する仕組みが有効です。

この記事では、WordPressにログインがあった際に、Chatworkへ通知を送る方法をご紹介します。


目的

  • WordPressログイン時の情報(ユーザー名・権限・IP・日時)をChatworkに自動通知
  • サイト名・URLもメッセージに含め、複数サイト運用時でも判別しやすくする

前提条件

以下が整っていれば導入可能です。

  • Chatworkのアカウントを保有している
  • ChatworkのAPIトークンを取得済み
  • 通知を送りたいChatworkグループチャットのルームIDが分かっている

実装内容

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

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

function notify_chatwork_on_login($user_login, $user) {
    // Chatwork API設定
    $api_token = 'YOUR_CHATWORK_API_TOKEN'; // ← APIトークンを入力
    $room_id   = '123456789';               // ← 通知先チャットのIDを入力

    // サイト情報
    $site_name = get_bloginfo('name');
    $site_url  = home_url();

    // ログイン情報
    $ip_address = $_SERVER['REMOTE_ADDR'];
    $login_time = current_time('mysql');
    $roles      = implode(', ', $user->roles);

    // Chatwork通知メッセージ
    $message = "[info][title]ユーザーログイン通知[/title]"
             . "■ サイト: {$site_name} ({$site_url})\n"
             . "■ ユーザー名: {$user_login}\n"
             . "■ 権限: {$roles}\n"
             . "■ ログイン日時: {$login_time}\n"
             . "■ IPアドレス: {$ip_address}"
             . "[/info]";

    // Chatwork APIにPOST送信
    $endpoint = "https://api.chatwork.com/v2/rooms/{$room_id}/messages";
    $args = [
        'headers' => [
            'X-ChatWorkToken' => $api_token,
        ],
        'body' => [
            'body' => $message,
        ],
    ];

    wp_remote_post($endpoint, $args);
}

通知される情報

Chatworkでは以下のような形式で通知されます。

[info][title]ユーザーログイン通知[/title]
■ サイト: サンプルサイト (https://example.com)
■ ユーザー名: takuofukao
■ 権限: administrator
■ ログイン日時: 2025-06-04 00:51:22
■ IPアドレス: 123.123.123.123
[/info]

セキュリティ・運用上の注意点

  • APIトークンは絶対に公開しないでください。 .envや設定ファイルなどで外部管理すると安全です。
  • IPアドレスがCDNやWAFの影響で取得できない場合は、HTTP_X_FORWARDED_FORを補完として利用することも検討できます。
  • 通知の頻度が多くなりすぎる場合は、フィルタを使って特定のロールのみ通知したり、通知間隔を制限する処理も追加可能です。

応用アイデア

  • ログイン失敗時(wp_login_failed)の通知追加
  • 管理者のみ通知対象にする
  • Slackなど他のサービスにも対応可能(通知送信部分の変更で実現)

まとめ

このカスタマイズを導入することで、WordPressのログイン状況をリアルタイムにChatworkで把握できるようになります。複数サイトを管理している場合や、セキュリティ監視を強化したいチームにとって、手軽で有効な方法です。

B!
← 一覧へ戻る