web-dev-qa-db-fra.com

Comment afficher le statut des utilisateurs (archive) dans archive.php

J'utilise le code d'état de l'utilisateur Comment vérifier si un utilisateur (utilisateur non actuel) est connecté? . Sur la page de profil de l'auteur cela fonctionne bien (merci les gars). Mais si je mets sur la page d'archive, au bas de l'article, cela ne fonctionne pas.

functions.php

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 - (15 * 60)))){
            $logged_in_users[$current_user] = $current_time;
            set_transient('users_online', $logged_in_users, 30 * 60);
        } 
    }
}

author.php

<?php
function is_user_online($user_id) {

    // get the online users list
    $logged_in_users = get_transient('users_online');

    // online, if (s)he is in the list and last activity was less than 15   minutes ago
    return isset($logged_in_users[$user_id]) && ($logged_in_users[$user_id] >     (current_time('timestamp') - (15 * 60)));   
}

$passthis_id = $curauth->ID;
if(is_user_online($passthis_id)){echo 'User is online.';}
else {echo'User is not online.';}
?>

EDITL'OP veut "afficher le statut au bas de chaque message sur la page d'archive".

6
Shklyar Sergio

On dirait que vous êtes proche de celui-ci.

Déplacer cette fonction:

function is_user_online( $user_id ) {
    // get the online users list
    $logged_in_users = get_transient( 'users_online' );

    // online, if (s)he is in the list and last activity was less than 15   minutes ago
    return isset( $logged_in_users[$user_id] ) && ( $logged_in_users[$user_id] >     ( current_time( 'timestamp' ) - ( 15 * 60 ) ) );   
}

dans votre fichier functions.php et supprimez-le de tout autre fichier. Dans la boucle, voici le code que vous voudrez utiliser:

<?php
global $post;
if( is_user_online( $post->post_author ) ) : ?>
    <p>User is online</p>
<?php else : ?>
    <p>User is offline</p>
<?php endif; ?>
1
Matthew Boynes