2010-09-27 16:26:36 -04:00
< ? php
/**
* Admin Bar
*
* This code handles the building and rendering of the press bar .
*/
2010-11-17 13:47:34 -05:00
2010-09-27 16:26:36 -04:00
/**
2010-10-28 04:31:36 -04:00
* Instantiate the admin bar object and set it up as a global for access elsewhere .
*
2011-01-14 00:57:25 -05:00
* To hide the admin bar , you ' re looking in the wrong place . Unhooking this function will not
* properly remove the admin bar . For that , use show_admin_bar ( false ) or the show_admin_bar filter .
*
2010-10-28 04:31:36 -04:00
* @ since 3.1 . 0
2011-01-14 00:57:25 -05:00
* @ access private
2010-10-28 04:31:36 -04:00
* @ return bool Whether the admin bar was successfully initialized .
2010-09-27 16:26:36 -04:00
*/
2011-01-14 00:57:25 -05:00
function _wp_admin_bar_init () {
2010-10-28 04:31:36 -04:00
global $wp_admin_bar ;
2010-09-27 16:26:36 -04:00
2010-10-28 04:31:36 -04:00
if ( ! is_admin_bar_showing () )
2010-09-27 16:26:36 -04:00
return false ;
/* Load the admin bar class code ready for instantiation */
2010-10-30 02:40:04 -04:00
require ( ABSPATH . WPINC . '/class-wp-admin-bar.php' );
2010-09-27 16:26:36 -04:00
2010-10-28 04:31:36 -04:00
/* Instantiate the admin bar */
$admin_bar_class = apply_filters ( 'wp_admin_bar_class' , 'WP_Admin_Bar' );
2010-11-17 13:47:34 -05:00
if ( class_exists ( $admin_bar_class ) )
2010-10-28 04:31:36 -04:00
$wp_admin_bar = new $admin_bar_class ;
else
return false ;
2010-11-17 13:47:34 -05:00
2010-10-28 04:31:36 -04:00
$wp_admin_bar -> initialize ();
$wp_admin_bar -> add_menus ();
2010-10-20 09:07:54 -04:00
2010-10-28 04:31:36 -04:00
return true ;
2010-09-27 16:26:36 -04:00
}
2011-01-14 00:57:25 -05:00
add_action ( 'init' , '_wp_admin_bar_init' ); // Don't remove. Wrong way to disable.
2010-09-27 16:26:36 -04:00
/**
* Render the admin bar to the page based on the $wp_admin_bar -> menu member var .
* This is called very late on the footer actions so that it will render after anything else being
* added to the footer .
*
2010-11-26 16:51:12 -05:00
* It includes the action " admin_bar_menu " which should be used to hook in and
2010-09-27 16:26:36 -04:00
* add new menus to the admin bar . That way you can be sure that you are adding at most optimal point ,
* right before the admin bar is rendered . This also gives you access to the $post global , among others .
2010-10-28 04:31:36 -04:00
*
* @ since 3.1 . 0
2010-09-27 16:26:36 -04:00
*/
function wp_admin_bar_render () {
global $wp_admin_bar ;
2010-12-19 04:54:13 -05:00
if ( ! is_admin_bar_showing () || ! is_object ( $wp_admin_bar ) )
2010-09-27 16:26:36 -04:00
return false ;
2010-10-23 15:49:25 -04:00
2010-12-15 12:33:02 -05:00
do_action_ref_array ( 'admin_bar_menu' , array ( & $wp_admin_bar ) );
2010-11-11 14:11:12 -05:00
2010-09-27 16:26:36 -04:00
do_action ( 'wp_before_admin_bar_render' );
$wp_admin_bar -> render ();
do_action ( 'wp_after_admin_bar_render' );
}
add_action ( 'wp_footer' , 'wp_admin_bar_render' , 1000 );
add_action ( 'admin_footer' , 'wp_admin_bar_render' , 1000 );
2011-09-25 19:30:40 -04:00
/**
* Add the WordPress logo menu .
*
* @ since 3.3 . 0
*/
function wp_admin_bar_wp_menu ( $wp_admin_bar ) {
$wp_admin_bar -> add_menu ( array (
'id' => 'wp-logo' ,
'title' => ' ' ,
'href' => '#' ,
'meta' => array (
'class' => 'wp-admin-bar-logo' ,
),
) );
2011-09-26 04:40:31 -04:00
if ( is_user_logged_in () ) {
// Add "About This Version" link
$wp_admin_bar -> add_menu ( array (
'parent' => 'wp-logo' ,
'id' => 'about' ,
'title' => __ ( 'About This Version' ),
'href' => admin_url ( 'about.php' ),
) );
}
2011-09-25 19:30:40 -04:00
// Add codex link
$wp_admin_bar -> add_menu ( array (
'parent' => 'wp-logo' ,
'id' => 'documentation' ,
'title' => __ ( 'Documentation' ),
'href' => 'http://codex.wordpress.org' ,
) );
// Add forums link
$wp_admin_bar -> add_menu ( array (
'parent' => 'wp-logo' ,
'id' => 'support-forums' ,
'title' => __ ( 'Support Forums' ),
'href' => 'http://wordpress.org/support/' ,
) );
// Add WordPress.org link
$wp_admin_bar -> add_menu ( array (
'parent' => 'wp-logo' ,
'id' => 'wporg' ,
'title' => __ ( 'WordPress.org' ),
'href' => 'http://wordpress.org' ,
) );
}
2010-09-27 16:26:36 -04:00
/**
2010-10-28 04:31:36 -04:00
* Add the " My Account " menu and all submenus .
*
* @ since 3.1 . 0
2010-09-27 16:26:36 -04:00
*/
2011-04-18 18:03:34 -04:00
function wp_admin_bar_my_account_menu ( $wp_admin_bar ) {
global $user_identity ;
2010-09-27 16:26:36 -04:00
2011-09-25 19:30:40 -04:00
$user_id = get_current_user_id ();
$current_user = wp_get_current_user ();
2010-11-17 13:47:34 -05:00
2010-11-11 06:49:37 -05:00
if ( 0 != $user_id ) {
/* Add the 'My Account' menu */
2011-09-16 01:01:54 -04:00
$avatar = get_avatar ( get_current_user_id (), 28 );
$howdy = sprintf ( __ ( 'Howdy, %1$s' ), $user_identity );
2011-09-25 19:30:40 -04:00
$class = 'opposite' ;
if ( ! empty ( $avatar ) )
$class .= ' with-avatar' ;
2010-12-14 08:42:56 -05:00
2011-09-25 19:30:40 -04:00
$wp_admin_bar -> add_menu ( array (
'id' => 'my-account' ,
'title' => $howdy . $avatar ,
'href' => get_edit_profile_url ( $user_id ),
'meta' => array (
'class' => $class ,
),
) );
2010-11-17 13:47:34 -05:00
2010-11-11 06:49:37 -05:00
/* Add the "My Account" sub menus */
2011-09-25 19:30:40 -04:00
$user_info = get_avatar ( get_current_user_id (), 64 );
$user_info .= " <span class='display-name'> { $current_user -> display_name } </span> " ;
if ( $current_user -> display_name !== $current_user -> user_nicename )
$user_info .= " <span class='username'> { $current_user -> user_nicename } </span> " ;
$wp_admin_bar -> add_menu ( array (
'parent' => 'my-account' ,
'id' => 'user-info' ,
'title' => $user_info ,
'meta' => array (
'class' => 'user-info user-info-item'
),
) );
$wp_admin_bar -> add_menu ( array (
'parent' => 'my-account' ,
'id' => 'edit-profile' ,
'title' => __ ( 'Edit My Profile' ),
'href' => get_edit_profile_url ( $user_id ),
'meta' => array (
'class' => 'user-info-item' ,
),
) );
$wp_admin_bar -> add_menu ( array (
'parent' => 'my-account' ,
'id' => 'logout' ,
'title' => __ ( 'Log Out' ),
'href' => wp_logout_url (),
'meta' => array (
'class' => 'user-info-item' ,
),
) );
$wp_admin_bar -> add_menu ( array (
'parent' => 'my-account' ,
'id' => 'my-account-secondary' ,
'title' => ' ' ,
'meta' => array (
'class' => 'secondary' ,
),
) );
}
wp_admin_bar_my_sites_menu ( $wp_admin_bar );
}
/**
* Add the " Network Admin " menu .
*
* @ since 3.3 . 0
*/
function wp_admin_bar_network_admin_menu ( $wp_admin_bar ) {
if ( is_multisite () && is_super_admin () && ! is_network_admin () ) {
$wp_admin_bar -> add_menu ( array (
'id' => 'network-admin' ,
'title' => __ ( 'Network Admin' ),
'href' => network_admin_url (),
'meta' => array (
'class' => 'opposite' ,
),
) );
2010-11-11 06:49:37 -05:00
}
2010-09-27 16:26:36 -04:00
}
2011-06-08 12:49:27 -04:00
/**
2011-09-16 01:01:54 -04:00
* Add the " Blog Name " menu in the front end .
2011-06-08 12:49:27 -04:00
*
2011-09-16 01:01:54 -04:00
* @ since 3.3 . 0
2011-06-08 12:49:27 -04:00
*/
2011-09-16 01:01:54 -04:00
function wp_admin_bar_blog_front_menu ( $wp_admin_bar ) {
2011-09-16 06:46:12 -04:00
if ( ! is_user_logged_in () )
return ;
2011-09-16 01:01:54 -04:00
$blogname = get_bloginfo ( 'name' );
2011-06-10 19:01:45 -04:00
2011-09-16 01:01:54 -04:00
if ( empty ( $blogname ) )
$blogname = preg_replace ( '#^(https?://)?(www.)?#' , '' , get_home_url () );
$wp_admin_bar -> add_menu ( array (
'id' => 'blog-name' ,
'title' => $blogname ,
'href' => admin_url (),
) );
// Add Dashboard item.
$wp_admin_bar -> add_menu ( array (
'id' => 'dashboard' ,
'title' => __ ( 'Dashboard' ),
'href' => admin_url (),
'parent' => 'blog-name' ,
) );
wp_admin_bar_appearance_menu ( $wp_admin_bar );
}
/**
* Add the " Blog Name " menu in the admin .
*
* @ since 3.3 . 0
*/
function wp_admin_bar_blog_admin_menu ( $wp_admin_bar ) {
global $current_site ;
if ( is_network_admin () ) {
$title = sprintf ( __ ( 'Network Admin: %s' ), esc_html ( $current_site -> site_name ) );
$url = '#' ;
} elseif ( is_user_admin () ) {
$title = sprintf ( __ ( 'Global Dashboard: %s' ), esc_html ( $current_site -> site_name ) );
$url = '#' ;
} else {
$title = get_bloginfo ( 'name' );
$url = get_home_url ();
if ( empty ( $title ) )
$title = preg_replace ( '#^(https?://)?(www.)?#' , '' , $url );
2011-06-09 07:16:07 -04:00
}
2011-09-16 01:01:54 -04:00
$wp_admin_bar -> add_menu ( array (
'id' => 'blog-name' ,
'title' => $title ,
'href' => $url ,
) );
2011-06-08 12:49:27 -04:00
}
2010-09-27 16:26:36 -04:00
/**
2010-10-28 04:31:36 -04:00
* Add the " My Sites/[Site Name] " menu and all submenus .
*
* @ since 3.1 . 0
2010-09-27 16:26:36 -04:00
*/
2011-04-18 18:03:34 -04:00
function wp_admin_bar_my_sites_menu ( $wp_admin_bar ) {
global $wpdb ;
2010-09-27 16:26:36 -04:00
2011-09-16 06:50:55 -04:00
if ( is_user_logged_in () ) {
// Add blog links
$blue_wp_logo_url = includes_url ( 'images/wpmini-blue.png' );
2011-09-16 21:11:52 -04:00
2011-09-16 06:50:55 -04:00
foreach ( ( array ) $wp_admin_bar -> user -> blogs as $blog ) {
// Skip the current blog (unless we're in the network/user admin).
if ( $blog -> userblog_id == get_current_blog_id () && ! is_network_admin () && ! is_user_admin () ) {
continue ;
}
2011-09-16 21:11:52 -04:00
2011-09-16 06:50:55 -04:00
// @todo Replace with some favicon lookup.
//$blavatar = '<img src="' . esc_url( blavatar_url( blavatar_domain( $blog->siteurl ), 'img', 16, $blue_wp_logo_url ) ) . '" alt="Blavatar" width="16" height="16" />';
$blavatar = '<img src="' . esc_url ( $blue_wp_logo_url ) . '" alt="' . esc_attr__ ( 'Blavatar' ) . '" width="16" height="16" class="blavatar"/>' ;
2011-09-16 21:11:52 -04:00
2011-09-16 06:50:55 -04:00
$blogname = empty ( $blog -> blogname ) ? $blog -> domain : $blog -> blogname ;
2011-09-25 19:30:40 -04:00
$menu_id = 'blog-' . $blog -> userblog_id ;
$wp_admin_bar -> add_menu ( array (
'parent' => 'my-account-secondary' ,
'id' => $menu_id ,
'title' => $blavatar . $blogname ,
'href' => get_admin_url ( $blog -> userblog_id ),
) );
$wp_admin_bar -> add_menu ( array (
'parent' => $menu_id ,
'id' => $menu_id . '-d' ,
'title' => __ ( 'Dashboard' ),
'href' => get_admin_url ( $blog -> userblog_id ),
) );
2011-09-16 21:11:52 -04:00
2011-09-16 06:50:55 -04:00
if ( current_user_can_for_blog ( $blog -> userblog_id , 'edit_posts' ) ) {
2011-09-25 19:30:40 -04:00
$wp_admin_bar -> add_menu ( array (
'parent' => $menu_id ,
'id' => $menu_id . '-n' ,
'title' => __ ( 'New Post' ),
'href' => get_admin_url ( $blog -> userblog_id , 'post-new.php' ),
) );
$wp_admin_bar -> add_menu ( array (
'parent' => $menu_id ,
'id' => $menu_id . '-c' ,
'title' => __ ( 'Manage Comments' ),
'href' => get_admin_url ( $blog -> userblog_id , 'edit-comments.php' ),
) );
2011-09-16 06:50:55 -04:00
}
2011-09-16 21:11:52 -04:00
2011-09-25 19:30:40 -04:00
$wp_admin_bar -> add_menu ( array (
'parent' => $menu_id ,
'id' => $menu_id . '-v' ,
'title' => __ ( 'Visit Site' ),
'href' => get_home_url ( $blog -> userblog_id ),
) );
2011-09-16 03:18:05 -04:00
}
2010-09-27 16:26:36 -04:00
}
}
/**
2010-10-29 11:17:22 -04:00
* Provide a shortlink .
2010-11-17 13:47:34 -05:00
*
2010-10-28 04:31:36 -04:00
* @ since 3.1 . 0
2010-09-27 16:26:36 -04:00
*/
2011-04-18 18:03:34 -04:00
function wp_admin_bar_shortlink_menu ( $wp_admin_bar ) {
2010-10-29 09:58:14 -04:00
$short = wp_get_shortlink ( 0 , 'query' );
2011-01-11 17:45:14 -05:00
$id = 'get-shortlink' ;
2010-10-29 11:17:22 -04:00
2011-01-11 17:45:14 -05:00
if ( empty ( $short ) )
return ;
2011-02-09 12:35:36 -05:00
2011-01-11 17:45:14 -05:00
$html = '<input class="shortlink-input" type="text" readonly="readonly" value="' . esc_attr ( $short ) . '" />' ;
2011-02-09 12:35:36 -05:00
2011-01-11 17:45:14 -05:00
$wp_admin_bar -> add_menu ( array (
'id' => $id ,
'title' => __ ( 'Shortlink' ),
'href' => $short ,
'meta' => array ( 'html' => $html ),
) );
2010-09-27 16:26:36 -04:00
}
/**
2010-10-28 04:31:36 -04:00
* Provide an edit link for posts and terms .
2010-11-17 13:47:34 -05:00
*
2010-10-28 04:31:36 -04:00
* @ since 3.1 . 0
2010-09-27 16:26:36 -04:00
*/
2011-04-18 18:03:34 -04:00
function wp_admin_bar_edit_menu ( $wp_admin_bar ) {
2011-06-08 12:49:27 -04:00
global $post , $tag ;
if ( is_admin () ) {
$current_screen = get_current_screen ();
if ( 'post' == $current_screen -> base
&& 'add' != $current_screen -> action
&& ( $post_type_object = get_post_type_object ( $post -> post_type ) )
&& current_user_can ( $post_type_object -> cap -> read_post , $post -> ID )
&& ( $post_type_object -> public ) )
{
$wp_admin_bar -> add_menu ( array (
'id' => 'view' ,
'title' => $post_type_object -> labels -> view_item ,
'href' => get_permalink ( $post -> ID )
) );
} elseif ( 'edit-tags' == $current_screen -> base
&& isset ( $tag ) && is_object ( $tag )
&& ( $tax = get_taxonomy ( $tag -> taxonomy ) )
&& $tax -> public )
{
$wp_admin_bar -> add_menu ( array (
'id' => 'view' ,
'title' => $tax -> labels -> view_item ,
'href' => get_term_link ( $tag )
) );
}
} else {
$current_object = get_queried_object ();
if ( empty ( $current_object ) )
return ;
if ( ! empty ( $current_object -> post_type )
&& ( $post_type_object = get_post_type_object ( $current_object -> post_type ) )
&& current_user_can ( $post_type_object -> cap -> edit_post , $current_object -> ID )
&& ( $post_type_object -> show_ui || 'attachment' == $current_object -> post_type ) )
{
$wp_admin_bar -> add_menu ( array (
'id' => 'edit' ,
'title' => $post_type_object -> labels -> edit_item ,
'href' => get_edit_post_link ( $current_object -> ID )
) );
} elseif ( ! empty ( $current_object -> taxonomy )
&& ( $tax = get_taxonomy ( $current_object -> taxonomy ) )
&& current_user_can ( $tax -> cap -> edit_terms )
&& $tax -> show_ui )
{
$wp_admin_bar -> add_menu ( array (
'id' => 'edit' ,
'title' => $tax -> labels -> edit_item ,
'href' => get_edit_term_link ( $current_object -> term_id , $current_object -> taxonomy )
) );
}
2010-10-28 04:31:36 -04:00
}
2010-09-27 16:26:36 -04:00
}
2010-12-13 15:35:28 -05:00
/**
* Add " Add New " menu .
*
* @ since 3.1 . 0
*/
2011-04-18 18:03:34 -04:00
function wp_admin_bar_new_content_menu ( $wp_admin_bar ) {
2010-11-01 10:58:59 -04:00
$actions = array ();
2011-06-10 22:20:18 -04:00
foreach ( ( array ) get_post_types ( array ( 'show_in_admin_bar' => true ), 'objects' ) as $ptype_obj ) {
if ( ! current_user_can ( $ptype_obj -> cap -> edit_posts ) )
2010-11-01 10:58:59 -04:00
continue ;
2010-12-13 15:35:28 -05:00
2011-06-10 22:20:18 -04:00
$actions [ 'post-new.php?post_type=' . $ptype_obj -> name ] = array ( $ptype_obj -> labels -> name_admin_bar , $ptype_obj -> cap -> edit_posts , 'new-' . $ptype_obj -> name );
2010-10-29 11:17:22 -04:00
}
2011-05-06 15:29:54 -04:00
if ( current_user_can ( 'upload_files' ) )
2011-06-10 12:43:48 -04:00
$actions [ 'media-new.php' ] = array ( _x ( 'Media' , 'add new from admin bar' ), 'upload_files' , 'new-media' );
2011-05-06 15:29:54 -04:00
if ( current_user_can ( 'manage_links' ) )
2011-06-10 12:43:48 -04:00
$actions [ 'link-add.php' ] = array ( _x ( 'Link' , 'add new from admin bar' ), 'manage_links' , 'new-link' );
2011-05-06 15:29:54 -04:00
if ( current_user_can ( 'create_users' ) || current_user_can ( 'promote_users' ) )
2011-06-10 12:43:48 -04:00
$actions [ 'user-new.php' ] = array ( _x ( 'User' , 'add new from admin bar' ), 'create_users' , 'new-user' );
2011-05-06 15:29:54 -04:00
if ( ! is_multisite () && current_user_can ( 'install_themes' ) )
2011-06-10 12:43:48 -04:00
$actions [ 'theme-install.php' ] = array ( _x ( 'Theme' , 'add new from admin bar' ), 'install_themes' , 'new-theme' );
2011-05-06 15:29:54 -04:00
if ( ! is_multisite () && current_user_can ( 'install_plugins' ) )
2011-06-10 12:43:48 -04:00
$actions [ 'plugin-install.php' ] = array ( _x ( 'Plugin' , 'add new from admin bar' ), 'install_plugins' , 'new-plugin' );
2011-06-10 19:01:45 -04:00
2010-11-01 10:58:59 -04:00
if ( empty ( $actions ) )
2010-10-29 11:17:22 -04:00
return ;
2010-12-19 16:14:52 -05:00
$wp_admin_bar -> add_menu ( array ( 'id' => 'new-content' , 'title' => _x ( 'Add New' , 'admin bar menu group label' ), 'href' => admin_url ( array_shift ( array_keys ( $actions ) ) ) ) );
2010-10-29 11:17:22 -04:00
foreach ( $actions as $link => $action ) {
$wp_admin_bar -> add_menu ( array ( 'parent' => 'new-content' , 'id' => $action [ 2 ], 'title' => $action [ 0 ], 'href' => admin_url ( $link ) ) );
}
}
2010-12-13 15:35:28 -05:00
/**
* Add edit comments link with awaiting moderation count bubble .
*
* @ since 3.1 . 0
*/
2011-04-18 18:03:34 -04:00
function wp_admin_bar_comments_menu ( $wp_admin_bar ) {
2010-10-29 11:17:22 -04:00
if ( ! current_user_can ( 'edit_posts' ) )
return ;
$awaiting_mod = wp_count_comments ();
2011-09-16 21:11:52 -04:00
$awaiting_mod = $awaiting_mod -> moderated ;
2011-09-16 01:01:54 -04:00
2011-09-16 21:11:52 -04:00
$icon = " <div class='ab-comments-icon'> " ;
$icon .= " <div class='ab-comments-icon-body'></div> " ;
$icon .= " <div class='ab-comments-icon-arrow'></div> " ;
$icon .= " </div> " ;
if ( $awaiting_mod )
$title = sprintf ( _n ( '%d Comment' , '%d Comments' , $awaiting_mod ), number_format_i18n ( $awaiting_mod ) );
else
$title = __ ( 'Comments' );
2010-10-29 11:17:22 -04:00
2011-09-16 01:01:54 -04:00
$wp_admin_bar -> add_menu ( array (
'id' => 'comments' ,
2011-09-16 21:11:52 -04:00
'title' => $icon . $title ,
2011-09-16 01:01:54 -04:00
'href' => admin_url ( 'edit-comments.php' ),
) );
2010-10-29 11:17:22 -04:00
}
2010-12-13 15:35:28 -05:00
/**
* Add " Appearance " menu with widget and nav menu submenu .
*
* @ since 3.1 . 0
*/
2011-04-18 18:03:34 -04:00
function wp_admin_bar_appearance_menu ( $wp_admin_bar ) {
2011-04-28 07:17:09 -04:00
// You can have edit_theme_options but not switch_themes.
if ( ! current_user_can ( 'switch_themes' ) && ! current_user_can ( 'edit_theme_options' ) )
2010-10-29 11:26:36 -04:00
return ;
2011-09-16 01:01:54 -04:00
$wp_admin_bar -> add_menu ( array (
'id' => 'appearance' ,
'title' => __ ( 'Appearance' ),
'href' => admin_url ( 'themes.php' ),
'parent' => 'blog-name' ,
) );
2010-10-29 11:26:36 -04:00
2011-04-28 07:17:09 -04:00
if ( ! current_user_can ( 'edit_theme_options' ) )
2010-10-29 11:26:36 -04:00
return ;
2011-04-28 07:17:09 -04:00
if ( current_user_can ( 'switch_themes' ) )
$wp_admin_bar -> add_menu ( array ( 'parent' => 'appearance' , 'id' => 'themes' , 'title' => __ ( 'Themes' ), 'href' => admin_url ( 'themes.php' ) ) );
2010-10-29 11:26:36 -04:00
if ( current_theme_supports ( 'widgets' ) )
$wp_admin_bar -> add_menu ( array ( 'parent' => 'appearance' , 'id' => 'widgets' , 'title' => __ ( 'Widgets' ), 'href' => admin_url ( 'widgets.php' ) ) );
if ( current_theme_supports ( 'menus' ) || current_theme_supports ( 'widgets' ) )
$wp_admin_bar -> add_menu ( array ( 'parent' => 'appearance' , 'id' => 'menus' , 'title' => __ ( 'Menus' ), 'href' => admin_url ( 'nav-menus.php' ) ) );
2011-04-27 18:06:01 -04:00
if ( current_theme_supports ( 'custom-background' ) )
$wp_admin_bar -> add_menu ( array ( 'parent' => 'appearance' , 'id' => 'background' , 'title' => __ ( 'Background' ), 'href' => admin_url ( 'themes.php?page=custom-background' ) ) );
2011-04-28 07:17:09 -04:00
if ( current_theme_supports ( 'custom-header' ) )
2011-04-27 18:06:01 -04:00
$wp_admin_bar -> add_menu ( array ( 'parent' => 'appearance' , 'id' => 'header' , 'title' => __ ( 'Header' ), 'href' => admin_url ( 'themes.php?page=custom-header' ) ) );
2010-10-29 11:26:36 -04:00
}
2010-12-13 15:35:28 -05:00
/**
* Provide an update link if theme / plugin / core updates are available .
*
* @ since 3.1 . 0
*/
2011-04-18 18:03:34 -04:00
function wp_admin_bar_updates_menu ( $wp_admin_bar ) {
2010-10-29 11:36:45 -04:00
2011-07-26 14:39:57 -04:00
$update_data = wp_get_update_data ();
2010-10-29 11:36:45 -04:00
2011-07-26 14:39:57 -04:00
if ( ! $update_data [ 'counts' ][ 'total' ] )
return ;
2010-10-29 11:36:45 -04:00
2011-07-26 14:39:57 -04:00
$update_title = " <span title=' { $update_data [ 'title' ] } '> " ;
$update_title .= sprintf ( __ ( 'Updates %s' ), " <span id='ab-updates' class='update-count'> " . number_format_i18n ( $update_data [ 'counts' ][ 'total' ]) . '</span>' );
2010-12-08 03:50:24 -05:00
$update_title .= '</span>' ;
2010-10-29 11:36:45 -04:00
2010-12-16 04:31:42 -05:00
$wp_admin_bar -> add_menu ( array ( 'id' => 'updates' , 'title' => $update_title , 'href' => network_admin_url ( 'update-core.php' ) ) );
2010-10-29 11:36:45 -04:00
}
2011-09-16 01:01:54 -04:00
/**
* Add screen options link .
*
* @ since 3.3 . 0
*/
function wp_admin_bar_screen_options_menu ( $wp_admin_bar ) {
$wp_admin_bar -> add_menu ( array (
'id' => 'screen-options' ,
'title' => __ ( 'Screen Options' ),
'href' => '#' ,
'meta' => array (
'class' => 'screen-meta-toggle hide-if-no-js' ,
),
) );
}
/**
* Add help link .
*
* @ since 3.3 . 0
*/
function wp_admin_bar_help_menu ( $wp_admin_bar ) {
$wp_admin_bar -> add_menu ( array (
'id' => 'help' ,
'title' => __ ( 'Help' ),
'href' => '#' ,
'meta' => array (
'class' => 'screen-meta-toggle hide-if-no-js' ,
),
) );
}
/**
* Add search form .
*
* @ since 3.3 . 0
*/
function wp_admin_bar_search_menu ( $wp_admin_bar ) {
$form = '<div id="adminbarsearch-wrap">' ;
$form .= '<form action="' . home_url () . '" method="get" id="adminbarsearch">' ;
$form .= '<input class="adminbar-input" name="s" id="adminbar-search"' ;
$form .= 'type="text" value="" maxlength="150" placeholder="' . esc_attr__ ( 'Search' ) . '" />' ;
$form .= '<input type="submit" class="adminbar-button" value="' . __ ( 'Search' ) . '"/>' ;
$form .= '</form>' ;
$form .= '</div>' ;
$wp_admin_bar -> add_menu ( array (
'id' => 'search' ,
'title' => $form ,
'href' => '#' ,
'meta' => array (
'class' => 'admin-bar-search' ,
// @TODO: Replace me with something far less hacky
'onclick' => 'if ( event.target.value != "Search" ) { return false; }' ,
),
) );
}
2010-09-27 16:26:36 -04:00
/**
2010-10-28 04:31:36 -04:00
* Style and scripts for the admin bar .
*
* @ since 3.1 . 0
*
2010-09-27 16:26:36 -04:00
*/
2010-12-05 23:51:52 -05:00
function wp_admin_bar_header () { ?>
2010-11-30 16:50:57 -05:00
< style type = " text/css " media = " print " > #wpadminbar { display:none; }</style>
2010-12-05 23:51:52 -05:00
< ? php
2010-11-30 16:50:57 -05:00
}
/**
* Default admin bar callback .
*
* @ since 3.1 . 0
*
*/
2010-12-05 23:51:52 -05:00
function _admin_bar_bump_cb () { ?>
2011-06-01 10:30:12 -04:00
< style type = " text/css " media = " screen " >
2011-01-14 12:52:51 -05:00
html { margin - top : 28 px ! important ; }
* html body { margin - top : 28 px ! important ; }
</ style >
2010-12-05 23:51:52 -05:00
< ? php
2010-10-28 04:31:36 -04:00
}
2010-09-27 16:26:36 -04:00
2010-12-17 16:48:30 -05:00
/**
2011-06-09 17:47:28 -04:00
* Set the display status of the admin bar .
2010-12-17 16:48:30 -05:00
*
* This can be called immediately upon plugin load . It does not need to be called from a function hooked to the init action .
*
* @ since 3.1 . 0
*
* @ param bool $show Whether to allow the admin bar to show .
* @ return void
*/
function show_admin_bar ( $show ) {
global $show_admin_bar ;
$show_admin_bar = ( bool ) $show ;
}
2010-09-27 16:26:36 -04:00
/**
2010-10-28 04:31:36 -04:00
* Determine whether the admin bar should be showing .
*
* @ since 3.1 . 0
*
* @ return bool Whether the admin bar should be showing .
2010-09-27 16:26:36 -04:00
*/
2010-10-28 04:31:36 -04:00
function is_admin_bar_showing () {
2011-03-08 17:48:05 -05:00
global $show_admin_bar , $pagenow ;
2010-11-17 13:47:34 -05:00
2011-09-17 18:26:01 -04:00
// For all these types of requests, we never want an admin bar.
2010-11-06 05:41:03 -04:00
if ( defined ( 'XMLRPC_REQUEST' ) || defined ( 'APP_REQUEST' ) || defined ( 'DOING_AJAX' ) || defined ( 'IFRAME_REQUEST' ) )
return false ;
2010-11-17 13:47:34 -05:00
2011-09-17 18:26:01 -04:00
// Integrated into the admin.
if ( is_admin () )
return true ;
2010-12-17 03:32:43 -05:00
if ( ! isset ( $show_admin_bar ) ) {
2011-03-08 17:48:05 -05:00
if ( ! is_user_logged_in () || 'wp-login.php' == $pagenow ) {
2010-10-28 04:31:36 -04:00
$show_admin_bar = false ;
2010-11-06 05:41:03 -04:00
} else {
2011-09-17 18:26:01 -04:00
$show_admin_bar = _get_admin_bar_pref ();
2010-11-06 05:41:03 -04:00
}
2010-10-28 04:31:36 -04:00
}
2010-09-27 16:26:36 -04:00
2010-10-28 04:31:36 -04:00
$show_admin_bar = apply_filters ( 'show_admin_bar' , $show_admin_bar );
return $show_admin_bar ;
}
2010-12-17 16:48:30 -05:00
/**
2011-09-17 18:26:01 -04:00
* Retrieve the admin bar display preference of a user .
2010-12-17 16:48:30 -05:00
*
* @ since 3.1 . 0
* @ access private
*
2011-09-17 18:26:01 -04:00
* @ param string $context Context of this preference check . Defaults to 'front' . The 'admin'
* preference is no longer used .
2011-06-09 17:47:28 -04:00
* @ param int $user Optional . ID of the user to check , defaults to 0 for current user .
* @ return bool Whether the admin bar should be showing for this user .
2010-12-17 16:48:30 -05:00
*/
2011-09-17 18:26:01 -04:00
function _get_admin_bar_pref ( $context = 'front' , $user = 0 ) {
2010-12-17 16:48:30 -05:00
$pref = get_user_option ( " show_admin_bar_ { $context } " , $user );
if ( false === $pref )
2011-07-21 15:41:18 -04:00
return true ;
2011-01-05 23:11:14 -05:00
2010-12-17 16:48:30 -05:00
return 'true' === $pref ;
}
2010-12-28 14:37:11 -05:00
2011-09-26 04:40:31 -04:00
?>