wordpress 線上即時流量
這段代碼創建了一個 get_online_visitors
函數,用於計算和顯示當前在線訪客人數,並將此功能以短碼 在線:36 人
方式顯示在 WordPress 頁面或文章中。以下是程式碼的各部分說明:
- 設置過期時間:
$expire_time = 300;
表示將在線訪客的存放時間設為 5 分鐘。 - 取得當前時間:
$current_time = current_time('timestamp');
取得當前時間的 Unix 時間戳,與存儲的訪客時間戳進行比較,以確定哪些訪客已過期。 - 訪客數據存取:使用 WordPress 的 Transients API 函數
get_transient
來獲取訪客數據,並預設為空的陣列。 - 移除過期的訪客:使用
foreach
迴圈,檢查每個訪客的 IP 和紀錄時間,若當前時間減去紀錄時間超過$expire_time
,則將該訪客移除。 - 紀錄當前訪客:取得當前訪客的 IP,並以
$_SERVER['REMOTE_ADDR']
保存至$visitors
陣列中,將 IP 作為鍵值,當前時間戳作為值。 - 更新訪客數據:使用
set_transient
函數保存更新後的訪客數據。 - 返回在線人數:透過
count($visitors)
返回在線人數。 - 創建短碼:
visitor_shortcode
函數透過get_online_visitors()
函數取得在線人數,並返回「在線:X 人」,使其在 WordPress 短碼在線:36 人
中顯示。
這樣設計後,只需在 WordPress 頁面或文章中插入 在線:36 人
短碼,即可顯示當前的在線人數。
function get_online_visitors() {
$expire_time = 300;
$current_time = current_time('timestamp');
$visitors = get_transient('online_visitors') ?: array();
foreach ($visitors as $ip => $timestamp) {
if (($current_time - $timestamp) > $expire_time) {
unset($visitors[$ip]);
}
}
$user_ip = $_SERVER['REMOTE_ADDR'];
$visitors[$user_ip] = $current_time;
set_transient('online_visitors', $visitors, $expire_time);
return count($visitors);
}
function visitor_shortcode() {
$online_visitors = get_online_visitors();
return "在線:{$online_visitors} 人";
}
add_shortcode('visitor', 'visitor_shortcode');