全登録ユーザーを一旦ログアウトさせて、次回ログイン時に運営者にメールを送信させる方法
この記事では、WordPressをチーム運営している場合に便利な、全員を一度ログアウトさせてから、次回ログイン時にメール通知を送る機能を紹介します。
1 全体の仕組み
以下の2段階で構成します。
- ① 全ユーザーを一括ログアウトさせる(管理者だけが実行可能)
- ② 誰かがログインするたびに、管理者へメール通知を送る
2 functions.php に追加するコード
子テーマの functions.php に以下のコードを追加してください。
投稿ページと固定ページのみに反映されるよう、is_single() || is_page() で条件分岐を行っています。
//---------------------------------------------------------
// 投稿・固定ページ限定:全員強制ログアウト+ログイン通知
//---------------------------------------------------------
if ( !is_admin() ) {
add_action('template_redirect', function() {
if ( !is_single() && !is_page() ) return; // 投稿と固定ページのみ
});
}
//---------------------------------------------------------
// ① 全員を確実に強制ログアウトさせる(管理者専用)
//---------------------------------------------------------
add_action('init', function() {
if ( current_user_can('administrator') && isset($_GET['force_logout_all']) ) {
global $wpdb;
// 全ユーザーのセッショントークンを削除(wp_usermeta から)
$wpdb->query(
"DELETE FROM {$wpdb->usermeta} WHERE meta_key = 'session_tokens'"
);
// 管理者自身のCookieも破棄
wp_clear_auth_cookie();
echo 'すべてのユーザーを完全にログアウトさせました。';
exit;
}
});
//---------------------------------------------------------
// ② ログイン成功時に管理者へメール通知
//---------------------------------------------------------
add_action('wp_login', function($user_login, $user) {
$to = get_option('admin_email');
$subject = '【WordPressログイン通知】' . get_bloginfo('name');
$message = sprintf(
"ユーザー「%s」(ID:%d)がログインしました。\n\nログイン時刻: %s\nIPアドレス: %s\nブラウザ: %s\nサイトURL: %s\n",
$user_login,
$user->ID,
date_i18n('Y-m-d H:i:s'),
$_SERVER['REMOTE_ADDR'] ?? '不明',
$_SERVER['HTTP_USER_AGENT'] ?? '不明',
home_url()
);
wp_mail($to, $subject, $message);
}, 10, 2);
3 使い方
全員をログアウトさせたい場合、管理者ユーザーで以下のURLにアクセスします。
https://example.com/wp-admin/?force_logout_all=1
これで全ユーザーが一度ログアウトされます。
次に誰かがログインした瞬間に、管理者メールアドレス宛に通知が届きます。
4 応用ポイント
- 複数管理者がいる場合、
get_users(['role' => 'administrator'])で全員に送信も可能。 - 通知内容に
$_SERVER['HTTP_USER_AGENT']を追加して、デバイス確認もできます。 - 頻繁なログイン通知が不要なら
set_transient()で「1時間に1回通知」などの制御も可能。
この方法なら、セキュリティ管理にも運営チームの動向把握にも最適です。


