Thông báo rằng quản trị viên đang trực tuyến


7

Làm thế nào tôi có thể nói với tất cả khách truy cập rằng quản trị viên đang trực tuyến. Ý tôi là nếu quản trị viên trực tuyến tất cả khách truy cập, đã đăng ký và không đăng ký, sẽ thấy dòng chữ này "xin chào quản trị viên đang trực tuyến ... nói chuyện với tôi" ...?

Cảm ơn bạn

Câu trả lời:


7

Đ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_seendấ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 ?>

Vì một số lý do, nó không hiển thị thông báo ... Bạn có biết vấn đề gì không? tôi đang kiểm tra nó trong một máy chủ cục bộ ... nó có phải là metter không?
yechiel

Ái chà, xấu quá. Lỗi là dòng này $last_seen = time();- đã thay đổi thành $last_seen = 0;(xem câu trả lời sửa đổi).
TheDeadMedic

1
@yechiel Sau đó, vui lòng đánh dấu nó là câu trả lời bằng cách đánh dấu vào dấu kiểm bên dưới mũi tên biểu quyết ở bên trái câu trả lời đó.
kaiser
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.