Benachrichtigung, dass der Administrator online ist


7

Wie kann ich allen Besuchern sagen, dass der Administrator online ist? Ich meine, wenn der Administrator online ist, werden alle registrierten und keine registrierten Besucher die Worte "Hallo, der Administrator ist online ... rede mit mir" sehen ...?

Vielen Dank

Antworten:


7

Damit sollten Sie loslegen. Ich habe eine Zeitüberschreitung von 5 Minuten verwendet, um die Zeit im Leerlauf auf der Website zu berücksichtigen. Sie können die Genauigkeit mit einem Skript verbessern (wenn der aktuelle Benutzer der Administrator ist) und alle paar Minuten eine AJAX-Anfrage anpingen, um den admin_last_seenZeitstempel zu aktualisieren .

/**
 * Check if the admin was last online at least 5 minutes ago.
 * 
 * @return bool
 */
function wpse_140253_is_admin_online() {
    if ( false === $last_seen = get_option( 'admin_last_seen' ) )
        update_option( 'admin_last_seen', $last_seen = 0 );
    elseif ( $last_seen )
        return $last_seen + 5 * MINUTE_IN_SECONDS > time();
    return false;
}

/**
 * Update "admin_last_seen" timestamp.
 * 
 * @link http://wordpress.stackexchange.com/q/140253/1685
 */
function wpse_140253_update_admin_online_status() {
    if ( current_user_can( 'manage_options' ) /* Might be better to check user ID if you have multiple admins */ ) {
        if ( ! $last_seen = get_option( 'admin_last_seen' ) )
            $last_seen = 0;

        // Only make a database update if last seen greater than timeout.
        if ( $last_seen + 5 * MINUTE_IN_SECONDS < time() )
            update_option( 'admin_last_seen', time() ); 
    }       
}

add_action( 'init', 'wpse_140253_update_admin_online_status' );

Und im Einsatz:

<?php if ( wpse_140253_is_admin_online() ) : ?>
     <div class="message">Admin is online!</div>
<?php endif ?>

Aus irgendeinem Grund wird die Meldung nicht angezeigt ... Irgendeine Idee, was das Problem sein könnte? Ich überprüfe es auf einem lokalen Server ... ist es metter?
Yechiel

Woah, mein Schlechtes. Fehler war diese Zeile $last_seen = time();- geändert in $last_seen = 0;(siehe überarbeitete Antwort).
TheDeadMedic

1
@yechiel Dann markieren Sie es bitte als Antwort, indem Sie das Häkchen unter den Abstimmungspfeilen links von dieser Antwort ankreuzen.
Kaiser
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.