add_admin_bar_menusхук-событиеWP 3.1.0

Срабатывает сразу после того, как WP создал базовые пункты админ-бара.

Его можно использовать, чтобы добавлять или убирать элементы панели.

Порядок выполнения:

  1. add_admin_bar_menus
  2. admin_bar_menu — здесь можно работать с $wp_admin_bar без глобала.
  3. wp_before_admin_bar_render
  4. wp_after_admin_bar_render

Используйте приоритет 0–99, чтобы правильно расположить свой пункт относительно системных.

Иногда удобнее использовать аналогичный хук admin_bar_menu, который срабатывет после этого, и который в параметрах коллбэк функции передаёт объект WP_Admin_Bar.

Использование

add_action( 'add_admin_bar_menus', 'wp_kama_add_admin_bar_menus_action' );

/**
 * Function for `add_admin_bar_menus` action-hook.
 * 
 * @return void
 */
function wp_kama_add_admin_bar_menus_action(){

	// action...
}

Примеры

0

#1 Демонстрация использования

add_action( 'add_admin_bar_menus', 'add_toolbar_node', 80 );
function add_toolbar_node() {
	global $wp_admin_bar;

	$wp_admin_bar->add_node(
		[
			'id'    => 'my-link',
			'title' => 'На главную',
			'href'  => home_url(),
		]
	);
}
0

#2 Удаление базовых элементов (ссылок) из тулбара

Я видел решение этой задачи в интернете - оно не очень хорошее, потому что элементы удаляются после того, как они были добавлены в панель. Было бы лучше вообще не добавлять их туда. Это делается следующим образом:

/**
 * Удаление основных элементов (ссылок) из панели инструментов (Admin Bar, Toolbar).
 */
add_action( 'add_admin_bar_menus', 'kama_remove_default_wp_menu_items', 0 );
function kama_remove_default_wp_menu_items() {
	/**
	 * Для полного списка доступных элементов:
	 * @see WP_Admin_Bar::add_menus()
	 * @see https://wp-kama.com/note/removing-basic-elements-links-from-the-toolbar
	 */
	$remove_wp_menus_items = [
		/** Логотип WordPress (со ссылками). {@see wp_admin_bar_wp_menu()} */
		'wp_admin_bar_wp_menu',
		/** Customizer. {@see wp_admin_bar_customize_menu()} */
		'wp_admin_bar_customize_menu',
		/** Комментарии. {@see wp_admin_bar_comments_menu()} */
		'wp_admin_bar_comments_menu',
		/** Дополнительная группа справа (поиск и аккаунт). {@see wp_admin_bar_add_secondary_groups()} */
		'wp_admin_bar_add_secondary_groups',
	];

	foreach( $remove_wp_menus_items as $callback ){
		$priority = has_action( 'admin_bar_menu', $callback );
		if( $priority !== false ){
			remove_action( 'admin_bar_menu', $callback, $priority );
		}
	}
}

Все доступные элементы меню WP для удаления (для приведенного выше кода).

$remove_wp_menus_items = [
	/// Связанные с пользователем (справа).

	/** Внутренние ссылки меню профиля. {@see wp_admin_bar_my_account_menu()} */
	'wp_admin_bar_my_account_menu',
	/** Весь пункт меню профиля. {@see wp_admin_bar_my_account_item()} */
	'wp_admin_bar_my_account_item',
	/** Поиск. {@see wp_admin_bar_search_menu()} */
	'wp_admin_bar_search_menu',

	/// Связанные с сайтом

	/** Логотип WordPress (со ссылками). {@see wp_admin_bar_wp_menu()} */
	'wp_admin_bar_wp_menu',
	/** Мои сайты. {@see wp_admin_bar_my_sites_menu()} */
	'wp_admin_bar_my_sites_menu',
	/** Сайты. {@see wp_admin_bar_site_menu()} */
	'wp_admin_bar_site_menu',
	/** Редактировать сайт. {@see wp_admin_bar_edit_site_menu()} */
	'wp_admin_bar_edit_site_menu',
	/** Настроить тему. {@see wp_admin_bar_customize_menu()} */
	'wp_admin_bar_customize_menu',
	/** Обновления. {@see wp_admin_bar_updates_menu()} */
	'wp_admin_bar_updates_menu',

	/// Связанные с контентом.

	/** Комментарии. {@see wp_admin_bar_comments_menu()} */
	'wp_admin_bar_comments_menu',
	/** Добавить запись, страницу, медиафайл и т. д.. {@see wp_admin_bar_new_content_menu()} */
	'wp_admin_bar_new_content_menu',
	/** Редактировать. {@see wp_admin_bar_edit_menu()} */
	'wp_admin_bar_edit_menu',

	/// Другие.

	/** Дополнительная группа (поиск и аккаунт) справа. {@see wp_admin_bar_add_secondary_groups()} */
	'wp_admin_bar_add_secondary_groups',
];

Скопируйте элементы из этого массива в приведенный выше код, чтобы удалить необходимые элементы меню в соответствии с вашим текущим требованием.

См. WP_Admin_Bar::add_menus().

Список изменений

С версии 3.1.0 Введена.

Где вызывается хук

WP_Admin_Bar::add_menus()
add_admin_bar_menus
wp-includes/class-wp-admin-bar.php 678
do_action( 'add_admin_bar_menus' );

Где используется хук в WordPress

Использование не найдено.