WP_Admin_Bar::add_node() publicWP 3.1.0

Додає елемент (посилання) до Адмін бару (верхнє меню на фронті).

Це метод аліасу: WP_Admin_Bar::add_menu() .

Використовувати цей метод потрібно на хуку admin_bar_menu .

Читайте також 11 хаків для Адмін-бару .

{} Це метод класу: WP_Admin_Bar{}

Працює на основі:
WP_Admin_Bar::_set_node()
Основа для:
WP_Admin_Bar::add_menu()

Хуків немає.

Повертає

null. Нічого.

Використання

$WP_Admin_Bar = новий WP_Admin_Bar();
$WP_Admin_Bar->add_node( $args );
$args
(масив) (обов’язковий)

Аргументи елемента, що додається. Масив може містити такі ключі:

  • ID (рядок) (обов’язковий)
    ID створюваного елемента панелі.

  • title (рядок) (обов’язковий)
    Заголовок/анкор посилання. Тут можна використовувати HTML теги, наприклад, щоб додати іконку.

  • href (рядок) (обов’язковий)
    УРЛ посилання.

  • parent (рядок)
    ID батьківського елемента, до якого елемент, що додається, повинен стати дочірнім.
    Типово: false

  • group (логічний)
    Чи є посилання груповим. Чи належить вона до якоїсь групи.
    Типово: false

  • meta (масив)
    Додаткові посилання. Дод. атрибути тега A. Можливо:

    • html– будь-який HTML-код або просто текст, який буде виведений відразу після тега A.
    • class– атрибут ‘class’
    • rel– атрибут ‘rel’
    • onclick– атрибут ‘onclick’
    • target– як відкривати посилання ‘_blank’ – у новому вікні
    • title– атрибут title
    • tabindex– порядок при натисканні клавіші TAB

    За замовчуванням: array()

Приклади

0

#1 Додамо посилання та дочірнє посилання в панель

// Додає посилання до адмін бару
add_action( 'admin_bar_menu', 'my_admin_bar_menu', 30);
function my_admin_bar_menu( $wp_admin_bar ){

	$wp_admin_bar->add_menu( array(
		'id' => 'menu_id',
		'title' => 'Зовнішнє посилання',
		'href' => 'http://example.com',
	)));

	// Дочірнє посилання
	$wp_admin_bar->add_menu( array(
		'parent' => 'menu_id', // параметр id з першого посилання
		'id' => 'some_id', // свій id, щоб можна було додати дочірні посилання
		'title' => 'Дочірнє посилання',
		'href' => 'http://example.com/subpage',
	)));
}

В результаті отримаємо:

toolbar4

Щоб змінити положення всього блоку посилань, пункту (поставити його до або після якогось блоку), змініть число 30 чим більше, тим ближче до кінця.

0

#2 Дочірнє посилання в меню сайту на сторінку плагінів

// Дочірнє посилання в меню сайту на сторінку плагінів
if( ! is_admin() ){

	add_action( 'admin_bar_menu', function ( $wp_admin_bar ) {

		$wp_admin_bar->add_menu( array(
			'parent' => 'site-name', // id батьківського елемента
			'id' => 'plugins_link', // свій id, щоб можна було додати дочірні посилання
			'title' => 'Плагіни',
			'href' => admin_url('plugins.php'),
		)));
	}, 100);
}

список змін

З версії 3.1.0Введено.
З версії 4.5.0Added ability to pass ‘lang’ and ‘dir’ meta data.

Код WP_Admin_Bar::add_node() add_node WP 6.0.2

public function add_node( $args ) {
	// Shim for old method signature: add_node($parent_id, $menu_obj, $args).
	if ( func_num_args() >= 3 && is_string( $args ) ) {
		$args = array_merge( array( 'parent' => $args ), func_get_arg( 2 ) );
	}

	if ( is_object( $args ) ) {
		$ args = get_object_vars ($ args);
	}

	// Ensure we have a valid title.
	if ( empty( $args['id'] ) ) {
		if ( empty( $args['title'] ) ) {
			return;
		}

		_doing_it_wrong( __METHOD__, __( 'The menu ID should not be empty.' ), '3.3.0' );
		// Deprecated: Generate an ID from the title.
		$args['id'] = esc_attr( sanitize_title( trim( $args['title'] ) ) ) );
	}

	$defaults = array(
		'id' => false,
		'title' => false,
		'parent' => false,
		'href' => false,
		'group' => false,
		'meta' => array(),
	);

	// Якщо не існують, exists, keep any data that isn't provided.
	$maybe_defaults = $this->get_node( $args['id'] );
	if ( $maybe_defaults ) {
		$defaults = get_object_vars( $maybe_defaults );
	}

	// Do the same for 'meta' items.
	if ( ! empty( $defaults['meta'] ) && ! empty( $args['meta'] ) ) {
		$args['meta'] = wp_parse_args( $args['meta'], $defaults['meta'] );
	}

	$ args = wp_parse_args ($ args, $ defaults);

	$back_compat_parents = array(
		'my-account-with-avatar' => array( 'my-account', '3.3' ),
		'my-blogs' => array( 'my-sites', '3.3' ),
	);

	if ( isset( $back_compat_parents[ $args['parent'] ] ) ) ) {
		list( $new_parent, $version ) = $back_compat_parents[ $args['parent'] ];
		_deprecated_argument( __METHOD__, $version, sprintf( 'Use <code>%s</code> як parent for the <code>%s</code> admin bar node instead of <code>%s</code>.' $new_parent, $args['id'], $args['parent'] ) );
		$args['parent'] = $new_parent;
	}

	$this->_set_node( $args );
}

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *