<?php
/*
Plugin Name: Real-Time Visitor Counter
Description: O an aktif olan ziyaretçileri sayı olarak gösterir.
Version: 1.0
Author: Your Name
*/

// Ziyaretçilerin bilgilerini kaydetmek için bir fonksiyon
function rtc_track_active_visitors() {
    if (is_single() || is_page()) {
        global $post;

        // Kullanıcının IP adresini ve aktif sayfa ID'sini al
        $ip_address = $_SERVER['REMOTE_ADDR'];
        $page_id = $post->ID;

        // Ziyaretçinin aktif olduğu sayfayı ve IP adresini saklamak
        $active_visitors = get_option('active_visitors', array());

        // Ziyaretçi verilerini kaydet veya güncelle
        $active_visitors[$ip_address] = array(
            'page_id' => $page_id,
            'timestamp' => time()
        );

        // Veriyi güncelle
        update_option('active_visitors', $active_visitors);
    }
}
add_action('wp_head', 'rtc_track_active_visitors');

// Ziyaretçileri sayı olarak görüntülemek için bir fonksiyon
function rtc_display_active_visitors_count($content) {
    if (is_single() || is_page()) {
        // Veritabanından aktif ziyaretçileri al
        $active_visitors = get_option('active_visitors', array());
        $current_page_id = get_the_ID();

        // Şu anki sayfayı ziyaret eden kullanıcıları filtrele
        $active_on_this_page = array_filter($active_visitors, function($visitor) use ($current_page_id) {
            return $visitor['page_id'] == $current_page_id && (time() - $visitor['timestamp']) < 300; // 5 dakikalık süre
        });

        // Aktif ziyaretçi sayısını al
        $visitor_count = count($active_on_this_page);

        // Ziyaretçi sayısını içeriğin altına ekle
        $content .= '<p>Şu an bu sayfayı inceleyenler sayısı: <strong>' . esc_html($visitor_count) . '</strong> kişi.</p>';
    }
    return $content;
}
add_filter('the_content', 'rtc_display_active_visitors_count');

// Ziyaretçi bilgilerini belirli aralıklarla temizlemek için bir fonksiyon
function rtc_clean_up_old_visitors() {
    $active_visitors = get_option('active_visitors', array());

    // 5 dakikadan daha eski ziyaretçileri sil
    foreach ($active_visitors as $ip => $visitor) {
        if (time() - $visitor['timestamp'] > 300) {
            unset($active_visitors[$ip]);
        }
    }

    // Veriyi güncelle
    update_option('active_visitors', $active_visitors);
}
add_action('wp_footer', 'rtc_clean_up_old_visitors');
demo: türkiye Ajans