Верхняя панель (admin bar)

Верхняя панель (admin bar)

В WordPress версии 3.1 появилась довольно спорная функция в виде "верхней панели", так же известной как "admin bar". Для кого-то эта панелька оказалась совершенно ненужной и лишней, а кто-то теперь и представить себе не может, как без нее жить. Лично я пока еще не определился нужна ли она мне или нет. Но в любом случае я хочу рассказать про различные хаки и плагины, связанные с этой панелью – от банального удаления панели до ее полной модификации.


1. Простое скрытие верхней панели

Если у вас в блоге запрещена регистрация пользователей и вы единственный админ блога, то для удаления панели не нужно применять никаких хаков - достаточно зайти в свой профиль и убрать галки с пунктов меню "Показывать верхнюю панель": "при просмотре сайта" и "в консоли":

Верхняя панель (admin bar)


2. Простое удаление верхней панели

Теперь удаляем верхнюю панель полностью для всех зарегистрированных пользователей блога, включая и админа. Откройте файл functions.php вашего шаблона и добавьте туда строчку:

add_filter('show_admin_bar', '__return_false');

Вернее будет сказать, что панель будет не удалена, а просто скрыта для всех пользователей. В профиле по-прежнему можно будет ставить галочки на "Показывать верхнюю панель", только вот они не будут работать.


3. Полное удаление верхней панели

Чтобы полностью избавиться от верхней панели, включая опции выбора в профиле пользователя надо использовать более объемный код. Вставьте в functions.php вашего шаблона следующий код:

add_filter( 'show_admin_bar', '__return_false' ); ?>
 
<?php function hide_admin_bar_settings() {
?>
	<style type="text/css">
		.show-admin-bar {
			display: none;
		}
	</style>
<?php
}
 
function disable_admin_bar() {
    add_filter( 'show_admin_bar', '__return_false' );
    add_action( 'admin_print_scripts-profile.php', 
         'hide_admin_bar_settings' );
}
add_action( 'init', 'disable_admin_bar' , 9 );


4. Простое удаление верхней панели для всех, кроме админов

Можно скрыть панель от всех, кроме, скажем, админов блога. Для этого вставьте в functions.php следующий код:

function my_function_admin_bar($content) {
	return ( current_user_can("administrator") ) ? $content : false;
}
add_filter( 'show_admin_bar' , 'my_function_admin_bar');

И опять же, этот код скроет панель для всех, кроме администраторов - но при этом в профиле пользователей все равно останется выбор опций показа панели, хоть он и не будет работать.


5. Полное удаление верхней панели для всех, кроме админов

Теперь про полное удаление панели (вместе с опциями выбора в профиле) для всех пользователей, кроме админов. Вставьте в functions.php следующий код:

function hide_admin_bar_settings() {
?>
	<style type="text/css">
		.show-admin-bar {
			display: none;
		}
	</style>
<?php
}
 
function disable_admin_bar() {
   if ( !current_user_can("administrator") ) {
      add_filter( 'show_admin_bar', '__return_false' );
      add_action( 'admin_print_scripts-profile.php', 
          'hide_admin_bar_settings' );
   }
}
add_action( 'init', 'disable_admin_bar' , 9 );

С помощью этого кода управлять показом панели из профиля смогут только администраторы, а все остальные пользователи не увидят ни панели, ни опций ее показа в профиле.


6. Плагин Admin Bar Disabler

Из десятка подобных плагинов Admin Bar Disabler показался мне наиболее удобным. Он умеет делать все то, что я перечислил выше. То есть скрывать полностью панель для всех или определенных ролей пользователей:

Admin Bar Disabler

Если вам лениво прописывать различный код в functions.php, то этот плагин избавит вас от необходимости делать что-либо вручную.


7. Перенос панели сверху вниз

Панельку можно расположить внизу:

Перенос панели сверху вниз

Для этого вставьте в functions.php следующий код:

function fb_move_admin_bar() {
     echo '
     <style type="text/css">
     body {
     margin-top: -28px;
     padding-bottom: 28px;
     }
     body.admin-bar #wphead {
     padding-top: 0;
     }
     body.admin-bar #footer {
     padding-bottom: 28px;
     }
     #wpadminbar {
     top: auto !important;
     bottom: 0;
     }
     #wpadminbar .quicklinks .menupop ul {
     bottom: 28px;
     }
     </style>';
}
 
//в консоли
add_action( 'admin_head', 'fb_move_admin_bar' );
//при просмотре сайта
add_action( 'wp_head', 'fb_move_admin_bar' );

Для этой же цели можно использовать плагин Stick Admin Bar To Bottom.


8. Вывод верхней панели для всех посетителей

Панель можно выводить всегда, даже для не зарегистрированных посетителей. В таком случае там будет только один пункт меню - "Войти":

Вывод верхней панели для всех посетителей

Вставьте в functions.php следующий код:

function pjw_login_adminbar( $wp_admin_bar) {
	if ( !is_user_logged_in() )
	$wp_admin_bar->add_menu( array( 'title' => __( 'Log In' ), 
	'href' => wp_login_url() ) );
}
add_action( 'admin_bar_menu', 'pjw_login_adminbar' );
add_filter( 'show_admin_bar', '__return_true' , 1000 );

Но при этом панель будет показываться всегда, независимо от настроек, которые установил пользователь в своем профиле.


9. Скрытие блока "Поиск" в верхней панели

Из панели можно удалить блок поиска:

Скрытие блока Поиск

Для удаления этого блока добавьте в functions.php код:

if ( !function_exists('hide_admin_bar_search') ) {
	function hide_admin_bar_search () { ?>
		<style type="text/css">
		#wpadminbar #adminbarsearch {
			display: none;
		}
		</style>
		<?php
	}
add_action('admin_head', 'hide_admin_bar_search');
add_action('wp_head', 'hide_admin_bar_search');
}

После этого блок поиска исчезнет для всех посетителей блога.


10. Добавление и удаление ссылок в верхней панели

Можно удалить из панели некоторые меню или, наоборот, их добавить. Например, можно убрать меню "Комментарии" и "Внешний вид":

Добавление и удаление ссылок в верхней панели

Для удаления этих меню вставьте в functions.php код:

function my_admin_bar_render() {
	global $wp_admin_bar;
	$wp_admin_bar->remove_menu('comments');
	$wp_admin_bar->remove_menu('appearance');
}
add_action( 'wp_before_admin_bar_render', 'my_admin_bar_render' );

Как видно из кода, чтобы удалить определенные меню из панели достаточно знать их обозначения. Полный список этих меню можно найти в файле "wp-includes/admin-bar.php", а вот некоторые из них:

  • my-account - ссылка на меню профиля (при отключенных граватарах)
  • my-account-with-avatar - ссылка на меню профиля (граватары включены)
  • my-blogs - ссылка на меню "мои сайты"
  • get-shortlink - меню "короткая ссылка" для текущей записи
  • edit - меню "редактировать запись"
  • new-content - меню "новый материал"
  • comments - меню "комментарии"
  • appearance - меню "внешний вид"
  • updates - меню "обновления"

Для добавления в панель ссылок код должен быть немного сложнее. Например, чтобы добавить в меню "Новый материал" ссылку на "Медиафайлы":

Добавление ссылки в верхней панели

Надо добавить в файл functions.php следующий код:

function my_admin_bar_render() {
	global $wp_admin_bar;
	$wp_admin_bar->add_menu( array(
		'parent' => 'new-content', //'false' для корневого меню
					   //или ID нужного меню
		'id' => 'new_media', // ID ссылки
		'title' => __('Media'), //заголовок ссылки
		'href' => admin_url( 'media-new.php') //имя файла	
	));
}
add_action( 'wp_before_admin_bar_render', 'my_admin_bar_render' );

Это самый простой вариант добавления своей ссылки в верхнюю панель. В Codex'е вы можете увидеть код, который будет выводить отдельное меню "Facebook" с внешними ссылками:

Добавление меню  Facebook в верхней панели

Забавно, что плагинов удаления верхней панели существует с десяток минимум, а вот создать плагин для редактирования, добавления и удалению меню в панели никому в голову не пришло. Может я плохо искал?


11. Плагин Admin Bar Minimiser

Данный плагин позволяет плавно скрыть или показать панель при нажатии на маленькие кнопочки плагина:

Admin Bar Minimiser

При нажатии на "Hide" панель будет скрыта, а при нажатии на "Show" опять показана. По сути, конечно, бесполезный плагин, но возможно кому-нибудь он пригодится. Слова "Show" и "Hide" вы можете перевести на русский в файле плагина admin-bar-minimiser.php, просто найдите их поиском и замените.


12. Плагин WP Custom Admin Bar

Еще один плагин управления верхней панелью. Помимо полного удаления панели для выбранных ролей пользователей плагин позволяет настроить внешний вид панели через css:

WP Custom Admin Bar

К сожалению, встроенных готовых стилей плагин не предоставляет, а составить свою красивую панельку мне не удалось, я все-таки не дизайнер. Странно, что автор плагина не включил в плагин встроенные стили, так как в описании плагина он дает скриншоты уже настроенных стилей панели вроде:

WP Custom Admin Bar


13. Плагин Admin Bar Theme Switcher

Этот плагин позволяет пользователям менять шаблон блога прямо из панели:

Admin Bar Theme Switcher

Не знаю, как для пользователей, но при создании блога эта функция очень удобна – можно легко оценивать скаченные шаблоны, не переключаясь постоянно на вкладку админки блога.


14. Плагин Admin Menus Fixed

Единственная задача плагина Admin Menus Fixed это "подружить" новую верхнюю панель WordPress с меню от плагина Ozh Admin Drop Down Menu:

Admin Menus Fixed

Но плагин полезен только при выводе верхней панели в консоли. Если вы не выводите там панель (а зачем, если плагин Ozh Admin Drop Down Menu практически повторяет собой верхнюю панель?), то и плагин вам вряд ли может понадобиться.

Понравился пост? Подпишись на обновления по Обновления блога по RSSRSS или Обновления блога на TwitterTwitter !

Комментарии (всего 107 комментариев)
Написать комментарий

(обязательно)

(обязательно, не публикуется)

Для вставки кода используйте кнопку "Код", по умолчанию используется синтаксис подсветки языка "php", вы можете поменять его на любой другой поддерживаемый GeSHi язык, например "javascript", "css", "html4strict", "sql" и тд. Используйте предпросмотр!
 


Подписаться на уведомления без комментирования.