it-swarm.com.de

So zeigen Sie den Status von Benutzern (online - offline) in archive.php an

Ich benutze den Code der Benutzerstatus Wie überprüfe ich, ob ein Benutzer (nicht aktueller Benutzer) angemeldet ist? . Auf Seitenprofil des Autors funktioniert es gut (Danke Jungs). Aber wenn ich die Archivseite am Ende des Beitrags anlege, funktioniert es nicht.

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.';}
?>

EDITDas OP möchte "den Status am Ende jedes Beitrags auf der Archivseite anzeigen".

6
Shklyar Sergio

Es sieht so aus, als ob Sie diesem nahe stehen.

Verschieben Sie diese Funktion:

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 ) ) );   
}

in deine functions.php Datei und entferne sie aus allen anderen Dateien. Dann in der Schleife, hier ist der Code, den Sie verwenden möchten:

<?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