Настраиваем WordPress admin bar

  • 27 Июн 2011

Добавляем ссылки и меню до Admin bar

Начиная с версии 3.1 в Вордпрес появился Admin bar, кому то это нововведение нравится кому то нет, и в этой статье мы рассмотрим как можно изменить панель под себя или совсем отключить ее.
настройка wp-admin-bar
Добавим новый пункт в меню «Новый материал», следующий код вставляем в файл functions.php вашей темы:

function media_admin_bar_handler() {
  global $wp_admin_bar;
  $wp_admin_bar->add_menu( array(
    // 'false' для главное меню, или ID меню к котором добавляем подменю
    'parent' => 'new-content',
    // ID для нашего пункта меню
    'id' => 'new_media',
     // Заголовок меню
    'title' => __('Media'),
     // Ссылка для меню
    'href' => admin_url( 'media-new.php'),
    // можна передать масив параметров:
    // array( 'html' => '', 'class' => '', 'onclick' => '', target => '', title => '' );
    'meta' => false 
  ));
}
add_action( 'wp_before_admin_bar_render', 'media_admin_bar_handler' );


Ещё один пример, создадим отдельное меню с ссылками на ваши другие сайты.
wp-admin-bar-add
Код оформлен в виде класса, весь код вставляем в файл functions.php.
Для изменения пунктов добавляемого меню, достаточно изменить функцию my_links().
add_root_menu(«Название», «id») — добавляем главное меню.
add_sub_menu(«Название», «http://ссылка», «id») — добавляем подменю
id подменю должно совпадать с id главного меню.

class MyLinksMenu {
  function MyLinksMenu() {
    add_action('admin_bar_menu', array($this, "my_links"));
  }
  function add_root_menu($name, $id, $href = FALSE) {
    global $wp_admin_bar;
    $wp_admin_bar->add_menu( array(
      'id' => $id,
      'title' => $name,
      'href' => $href ) );
  }
  function add_sub_menu($name, $link, $root_menu, $meta = FALSE)  {
    global $wp_admin_bar;
    $wp_admin_bar->add_menu( array(
      'parent' => $root_menu,
      'title' => $name,
      'href' => $link,
      'meta' => $meta) );
  }
  function my_links() {
    $this->add_root_menu("Мои сайты", "mylnk");
    $this->add_sub_menu("Twitter", "http://twitter.com/karlkori/", "mylnk");
    $this->add_sub_menu("Другой класный блог", "http://example.com", "mylnk");
  }
}
add_action("init", "myLinkMenuInit");
function myLinkMenuInit() {
  global $myLnk;
  $myLnk = new MyLinksMenu();
}

Удаляем ссылки и меню с Admin bar

Следующий код удаляем меню комментариев.

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

Для удаления других меню в remove_menu( ) указываем другие id страниц, вот некоторые из них:

  • my-account – профиль
  • my-account-with-avatar – аватарка
  • my-blogs – мои сайты в WordPress MU
  • get-shortlink – короткая ссылка
  • edit – редактировать запись
  • new-content – новый материал
  • comments – комментарии
  • appearance – внешний вид
  • updates – обновления

Отключаем Admin bar для всех пользователей

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

add_filter('show_admin_bar', '__return_false');

Отключаем Admin bar для всех пользователей кроме администраторов

// Показывать только администратору
 if ( !current_user_can('manage_options') ) {
	add_filter('show_admin_bar', '__return_false');
 }
// Проказывать только администратору и редакторам
 if ( !current_user_can('edit_posts') ) {
	add_filter( 'show_admin_bar', '__return_false' );
 }

Наведены выше примеры отключают Admin bar, но в настройках профиля пользователей остаются нерабочие опции включения\отключения Admin bar, что бы их скрыть добавляем следующий код:

function hideAdminBar() {
  echo '<style type="text/css">.show-admin-bar { display: none; }</style>';
}
add_action('admin_print_scripts-profile.php', 'hideAdminBar');

Что вы думаете?

Имя обязательно

Сайт