オンラインユーザー数をショートコードで表示する方法
このページでは、「現在オンライン中のユーザー数」を表示できるショートコードを作成します。
1 実装のポイント
- アクセス時にユーザーのIPアドレスと時刻を記録します。
- 一定時間内(例:5分以内)にアクセスしたユーザーを「オンライン」とみなします。
2 functions.php にコードを追加
/* ---------------------------------------
* HOME と投稿ページでオンライン人数を表示
* --------------------------------------- */
function show_online_users() {
// HOMEまたは投稿ページでのみ実行
if ( !is_front_page() && !is_single() ) return '';
$transient_key = 'online_users_list';
$timeout = 5 * MINUTE_IN_SECONDS; // 5分以内をオンラインとみなす
$user_ip = $_SERVER['REMOTE_ADDR'];
$current_time = time();
// 現在のオンラインリストを取得
$online_users = get_transient($transient_key);
if ( !is_array($online_users) ) {
$online_users = [];
}
// 自分のアクセスを記録
$online_users[$user_ip] = $current_time;
// タイムアウトしたユーザーを削除
foreach ( $online_users as $ip => $timestamp ) {
if ( ($current_time - $timestamp) > $timeout ) {
unset($online_users[$ip]);
}
}
// 更新データを保存
set_transient($transient_key, $online_users, $timeout);
$count = count($online_users);
return '<div class="online-users-count">現在のオンラインユーザー数:<strong>' . $count . '</strong> 人</div>';
}
add_shortcode('online_users', 'show_online_users');
補足:
ウィジェットや各ページでショートコード
ウィジェットや各ページでショートコード
[online_users] と記述すると、現在オンラインのユーザー数が表示されます。
ウィジェット、記事内で表示する場合:
[online_users]
3 完成イメージ
現在のオンラインユーザー数:1 人
4 代用プラグイン
同様の機能をプラグインで実装したい場合は、以下のようなプラグインでも可能です:
- WP UserOnline(ユーザーごとのアクセスをリアルタイムで表示)
- Who’s Online(訪問中のユーザーをリスト表示可能)
ただし、今回のコードはサーバー負荷を抑えつつ「シンプルにカウント表示」することを目的にしています。
5 まとめ
このショートコードを使えば、現在のオンラインユーザー数を動的に表示できます。「簡易的なアクセス状況を知りたい」という場合におすすめです。


コメント欄をアコーディオンで折りたたむ方法(投稿ページ限定)