<?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');