Skip to content

Instantly share code, notes, and snippets.

@flowtwo
Created October 11, 2013 18:19
Show Gist options
  • Save flowtwo/6939533 to your computer and use it in GitHub Desktop.
Save flowtwo/6939533 to your computer and use it in GitHub Desktop.
WordPress - Add list of currently online users to admin bar
/*
* Apply online user status
*/
function gr_users_online_transient() {
if ( is_user_logged_in() ) {
$key = 'online';
$time = 60 * 5;
$user = wp_get_current_user();
$id = $user->ID;
$status = get_transient( $key .'_'. $id );
if ( empty( $status ) ) {
$status = 'online';
set_transient( $key .'_'. $id, $status, $time );
}
}
}
add_action( 'init', 'gr_users_online_transient' );
class gr_users_online_menu {
function gr_users_online_menu() {
add_action( 'admin_bar_menu', array( $this, "gr_users_online_menu_links" ), 90 );
}
function add_root_menu($name, $id, $href = FALSE) {
global $wp_admin_bar;
if ( !is_super_admin() || !is_admin_bar_showing() ) {
return;
}
$wp_admin_bar->add_menu( array(
'id' => $id,
'meta' => array(),
'title' => $name,
'href' => $href )
);
}
function add_sub_menu($name, $link, $root_menu, $id, $meta = FALSE) {
global $wp_admin_bar;
if ( ! is_super_admin() || ! is_admin_bar_showing() ) {
return;
}
$wp_admin_bar->add_menu( array(
'parent' => $root_menu,
'id' => $id,
'title' => $name,
'href' => $link,
'meta' => $meta
));
}
function gr_users_online_menu_links() {
$num = 0;
$users = get_users('orderby=nicename');
foreach ( $users as $user ) {
$status = get_transient( 'online_'. $user->ID );
if ( $status == 'online' ) {
$data = get_userdata( $user->ID );
$this->add_sub_menu( $data->display_name, '', 'gr-user', 'gr-user-'. $user->ID );
++$num;
}
}
if ( $num > 1 ) {
$this->add_root_menu( $num .' '. __('online users','green'), 'gr-user' );
}
}
}
function gr_users_online_init() {
global $gr_users_online_menu;
$gr_users_online_menu = new gr_users_online_menu();
}
add_action( 'init', 'gr_users_online_init' );
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment