Добавляем и удаляем элементы на новой панели в WordPress 3.3

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

Удаление ссылок из тулбара, remove_node()

$wp_admin_bar->remove_node($id);

Для того, чтобы узнать $id, нужно найти HTML тулбара в исходном коде, например через Ctrl + U или в инструментах разработчика.

<li id="wp-admin-bar-new-post" class=""> ... </li>

$id будет равен new-post

<li id="wp-admin-bar-user-info" class=""> ... </li>

А здесь это user-info. Точно таким же образом можно удалять и субменю, у них тоже есть свой $id.

В этом примере я избавлюсь от всех элементов, которые есть по умолчанию на панели управления в только что установленном WordPress.

function remove_bar_items( $wp_admin_bar ) {
	$wp_admin_bar->remove_node('wp-logo');
	$wp_admin_bar->remove_node('site-name');
	$wp_admin_bar->remove_node('comments');
	$wp_admin_bar->remove_node('new-content');
	$wp_admin_bar->remove_node('my-account');
}
 
add_action( 'admin_bar_menu', 'remove_bar_items', 999 );

Добавляем собственные ссылки в тулбар, используя функцию add_node()

$wp_admin_bar->add_node( $args );

Массив $args может содержать следующие параметры:

id
(строка) ID нового элемента

title
(строка) Заголовок нового элемента — его мы и будем видеть на панели

parent
(строка) Вы можете указать ID родительского элемента, чтобы ваша ссылка появилась в выпадающем меню или ID группы

href
(строка) Значение атрибута href у ссылки. Можете ничего не указывать, тогда получится текстовый элемент (без ссылки).

group
(логическое) Вы можете превратить элемент в группу. Сами по себе группы невидимы в тулбаре, но их можно использовать в качестве родительских элементов.

meta
(массив) параметры:

  • html — будет добавлен сразу же после ссылки
  • class — CSS-класс для элемента
  • onclick — JavaScript-событие для ссылки
  • target — значение html-атрибута target
  • title — значение html-атрибута title
  • tabindex — значение html-атрибута tabindex

В этом примере я добавлю ссылку на свой блог:

function add_bar_items( $wp_admin_bar ) {
	$args = array(
		'id' => 'truemisha',
		'title' => 'Truemisha.ru, блог веб-разработчика',
		'href' => 'https://truemisha.ru/',
		'parent' => false,
		'group' => false,
		'meta' => array(
					'class' => 'true',
					'target' => 'blank',
					'title' => 'Читать блог'
					)
	);
	$wp_admin_bar->add_node( $args );
}
 
add_action( 'admin_bar_menu', 'add_bar_items', 999 );

На скриншоте вы видите результат обоих примеров, панель управления содержит только одну, добавленную мной ссылку.

Подпишитесь, чтобы раз в неделю получать свежие статьи с блога по email.

Смотрите также

Комментарии 4

  • plex16 марта 2014 в 03:03 #

    как сделать кнопку способную добавлять запись в определенную рубрику
    может существует get запрос под эти цели ? :)
    например new-post.php?category=nazvanie

    • Миша16 марта 2014 в 12:03 #

      боюсь, что для этого придётся переработать весь метабокс рубрик.

      • plex16 марта 2014 в 14:03 #

        Слишком сложно)
        Я думаю тогда проще проверить HTTP_REFERER и через js включить нужный чекбокс .

  • plex16 марта 2014 в 16:03 #

    решил вопрос через js, только проверял не HTTP_REFERER, а параметры в GET
    отлично работает :)

Оставить комментарий / вопрос

phpjsHTMLCSSSQLПросто код
  Для того, чтобы оставить комментарий, пожалуйста, зарегистрируйтесь или авторизуйтесь на сайте.
Получайте новости блога по email или следите за мной в социальных сетях.
  • Миша: Добрый день! В принципе вам только немного нужно доработать код из этого поста - категории уже есть, цена - это и так...

  • eveniy: Добрый день Михаил, подскажите на примере как добавить свои произвольные поля в в вашу форму фильтрации: Я так понимаю...

  • Миша: Отлично! )

  • Дмитрий: сам разобрался: в настройках кастомного типа записи недавно оптимизировал настройки и переоптимизировал: в аргументе 'ta...

  • Дмитрий: У меня по какой-то причине пропало отображение (как в колонке меню слева, так и метабокс в записях ) раздела рубрик для...