Админ бар (админ панель, admin bar) появился в версии WordPress 3.3, то есть уже довольно давно. Он довольно удобен как минимум тем, что мы можем легко перейти в админку из сайта, но также он может содержать кастомные элементы навигации, которые в этом уроке мы и добавим.
Как обычно, я что-то реализовал на своих проектах и решил поделиться решением с вами. Вот примерно то, что мы с вами будем делать:
Добавление новых элементов происходит при помощи хука admin_bar_menu
и метода $wp_admin_bar->add_node()
.
Примерно так:
add_action( 'admin_bar_menu', 'true_add_admin_bar_link', 25 ); function true_add_admin_bar_link( $wp_admin_bar ) { $args = array( // параметры ); $wp_admin_bar->add_node( $args ); }
Давайте теперь рассмотрим то, что может быть в массиве параметров $args
.
html
— будет добавлен сразу же после ссылкиclass
— CSS-класс для элементаonclick
— JavaScript-событие для ссылкиtarget
— значение html-атрибута targettitle
— значение html-атрибута titletabindex
— значение html-атрибута tabindexПопробуем добавить ссылку теперь!
add_action( 'admin_bar_menu', 'true_add_admin_bar_link', 25 ); function true_add_admin_bar_link( $wp_admin_bar ) { $args = array( 'id' => 'mytestmenu', 'title' => 'Все курсы', 'href' => site_url( 'kursy-wordpress-woocommerce' ) ); $wp_admin_bar->add_node( $args ); }
Не знаете, куда вставлять код?
Также есть возможность добавлять несколько уровней вложенностей, например:
add_action( 'admin_bar_menu', 'true_add_admin_bar_link', 25 ); function true_add_admin_bar_link( $wp_admin_bar ) { $wp_admin_bar->add_node( array( 'id' => 'mytestmenu', 'title' => 'Все курсы', 'href' => site_url( 'kursy-wordpress-woocommerce' ) ) ); $wp_admin_bar->add_node( array( 'id' => 'mytestmenu_lvl2', 'parent' => 'mytestmenu', 'title' => 'Уровень 2', 'href' => '#' ) ); $wp_admin_bar->add_node( array( 'id' => 'mytestmenu_lvl3', 'parent' => 'mytestmenu_lvl2', 'title' => 'Уровень 3', 'href' => '#' ) ); }
Не забывайте, что вы можете использовать условный тег is_admin(), если хотите, чтобы ваше меню отображалось только в админке или только на сайте, и например current_user_can(), если хотите добавить правила для определённых ролей пользователей.
Для того, чтобы удалить (или изменить) какой-либо элемент меню в админ баре, нужно знать ID этого элемента.
Это можно сделать довольно легко, проинспектировав элемент в браузере (например правой кнопкой мыши, затем «Проинспектировать элемент»). Там ищем атрибут id
элемента. Например, если вы хотите удалить логотип, мы чекает элемент и смотрим, что его атрибут id
равен wp-admin-bar-wp-logo
, нужно удалить часть wp-admin-bar-
и получается, что ID элемента это wp-logo
.
Вот некоторые из стандартных ID:
wp-logo
about
wporg
documentation
support-forum
feedback
site-name
dashboard
themes
customize
widgets
menus
customize-background
customize-header
comments
new-content
new-post
new-media
new-page
new-user
edit
user-actions
(там, где ваша аватарка справа)user-info
edit-profile
logout
Итак, попробуем удалить логотип WordPress. Так как это элемент верхнего уровня, то будут удалены и все его дочерние элементы.
add_action( 'admin_bar_menu', 'true_remove_admin_bar_items', 25 ); function true_remove_admin_bar_items( $wp_admin_bar ) { $wp_admin_bar->remove_node( 'wp-logo' ); }
Чтобы оставить комментарий, пожалуйста, зарегистрируйтесь или войдите.
как сделать кнопку способную добавлять запись в определенную рубрику
может существует get запрос под эти цели ? :)
например new-post.php?category=nazvanie
боюсь, что для этого придётся переработать весь метабокс рубрик.
Слишком сложно)
Я думаю тогда проще проверить HTTP_REFERER и через js включить нужный чекбокс .
решил вопрос через js, только проверял не HTTP_REFERER, а параметры в GET
отлично работает :)