Câu trả lời:
Điều này sẽ giúp bạn bắt đầu. Tôi đã sử dụng thời gian chờ là 5 phút để cho phép thời gian không hoạt động trên trang web. Bạn có thể cải thiện độ chính xác bằng một tập lệnh (nếu người dùng hiện tại là quản trị viên) và gửi yêu cầu AJAX cứ sau vài phút để cập nhật admin_last_seen
dấu thời gian.
/**
* 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' );
Và đang sử dụng:
<?php if ( wpse_140253_is_admin_online() ) : ?>
<div class="message">Admin is online!</div>
<?php endif ?>
$last_seen = time();
- đã thay đổi thành $last_seen = 0;
(xem câu trả lời sửa đổi).