Antworten:
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_seen
Zeitstempel 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 ?>
$last_seen = time();
- geändert in $last_seen = 0;
(siehe überarbeitete Antwort).