Not: 2 farklı kaynaktan faydalanarak, eklemekler ile böyle bir script açığa çıktı. İşe yarar bişey olduğuna inanıyorum. Özellikle wordpress geliştiriceilerinin işine yarar bir kod kümesi.
/**
* @uses update_online_users_status online kişileri kaydeder
* [MENTION=28303]return[/MENTION] array
* [MENTION=28303]return[/MENTION] id
*/
add_action('wp', 'update_online_users_status');
function update_online_users_status(){
if(is_user_logged_in()){
if(($logged_in_users = get_transient('users_online')) === false) $logged_in_users = array();
$current_user = wp_get_current_user();
$current_user = $current_user->ID;
$current_time = current_time('timestamp');
if(!isset($logged_in_users[$current_user]) || ($logged_in_users[$current_user] < ($current_time - (60)))){
$logged_in_users[$current_user] = $current_time;
set_transient('users_online', $logged_in_users, 30 * 60);
}
}
}
// use this function to check if a user is online
// pass the user ID
// example, for the author page:
// if(is_user_online(get_query_var('author'))) echo 'user is online';
function is_user_online($user_id) { //id si verilen kişinin online olup olmadıgını sorgular (true/false) dondurur
$logged_in_users = get_transient('users_online');
return isset($logged_in_users[$user_id]) && ($logged_in_users[$user_id] > (current_time('timestamp') - (60)));
}
function get_user_online(){ //online kişileri dondurur
$logged_in_users = get_transient('users_online');
foreach ($logged_in_users as $id => $time) {
if($time>(current_time('timestamp') - (60))){
$array[]=$id;
}
}
return $array;
}Gorunmesını ıstedıgımız yer, Format 1:
<?php print_r(is_user_online($id)); //$id = sorgulanacak id (örn: 1) ?>
Format 2:
<?php print_r( get_user_online()); //tüm online kişiler ?>
Zaman ayarlarını kafanıza gore yapın..
Ben şöyle yaptım,
Toplam listenın ömrü 30 dk..
Listenin içindeki (array daki) kişilerin online ömrü 60sn. Her 60 sn de bir kişiyi kontrol eder online ise yeniden listeye ekler aksi halde listeden kaldırır.
Not: Online Author olduğuna dikkat çekiyorum. Diğerleri gibi IP ile gelen giden herkesi sorgulamaz. Sadece üyeler içindir. Giren kişi sayısını değil giren kişiler hakkındaki tüm bilgileri (id aracılığı ile) ulaşabilirsiniz.
Kolay gelsin.