管理员在线的通知

时间:2014-04-04 作者:yechiel

我如何才能告诉所有访问者,管理员是在线的。我的意思是,如果管理员在线,所有已注册和未注册的访问者都会看到这句话“你好,管理员在线……跟我谈谈”?

非常感谢。

1 个回复
SO网友:TheDeadMedic

这应该让你开始。我已经使用了5分钟的超时时间来允许网站空闲。您可以使用脚本提高准确性(如果当前用户是管理员)(&;每隔几分钟ping一次AJAX请求以更新admin_last_seen 时间戳。

/**
 * 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\' );
使用中:

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

结束

相关推荐

重写admin-ajax.php的规则

我浏览了很多帖子,在google上搜索了很多,但还是没能实现。我正在尝试为管理ajax创建一个重写规则。php,以实现此处所示的相同结果:Adding admin-ajax.php to the frontend. Good or bad idea?但是,我不想使用htaccess文件。相反,我需要通过动态添加规则(比如使用add\\u rewrite\\u rule)来实现这一点,例如,因为要调用的ajax函数位于我正在编写的插件中,我希望提供一个友好的URL来调用。我似乎遵循了有关该方法的所有最佳做法