Вот собственно о таком красивом кружочке (bubble) рядом с наименованием пункта идет речь.
Админ меню является глобальным массивом в WordPress. Все изменения выполняются с помощью обработки этого массива. Важно, чтобы нужные пункты меню уже были созданы в момент обработки.
1 |
global $menu; |
Наиболее общий подход — создание зацепки к admin_menu
вот так:
1 2 3 |
if (is_admin()) { add_action( 'admin_menu', 'modify_admin_menu'); } |
Каждый пункт меню в массиве — это в свою очередь массив из 7 элементов. Например:
1 2 3 4 5 6 7 8 9 10 |
[100] => Array ( [0] => TML //метка меню [1] => manage_options [2] => theme_my_login [3] => Настройки Theme My Login [4] => menu-top menu-icon-generic toplevel_page_theme_my_login [5] => toplevel_page_theme_my_login [6] => dashicons-admin-generic ) |
Ключ (100) — это вес пункта меню. Вы можете самостоятельно поизучать назначение каждого из элементов, а для нашей задачи будут важны только два из них — 0 и 2.
Элемент [0] содержит HTML код метки меню. Сюда добавим HTML код пузырька.
Элемент [2] содержит псевдоним страницы или название php скрипта. Эти данные позволяют WP сформировать url в админ панели, а нам они позволят найти нужную страницу среди всех прочих.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
function modify_admin_menu() //добавить пузырек в админ меню WP global $menu; //здесь вы вычислите своё какое то значение, //а я для примера взял константу $count = 10; if ( $count ) { foreach ( $menu as $key => &$item) { //нашли требуемый пункт if ( $item[2] == 'theme_my_login' ) { //добавили бабл с шаблон $item[0] .= ' <span class="update-plugins"><span class="plugin-count">' . $count . '</span></span>'; break; } } } } |
Стили оформления пузырька я заимствовал из верстки : так был оформлен пузырек с кол-вом плагинов, требующих обновления.
Здравствуйте. Материал интересный, спасибо. Есть вопрос:
Создал пункт меню :
add_menu_page(‘custom menu title’, ‘Статьи Мероприятия’, ‘manage_options’, ‘edit.php?s&post_status=all&post_type=post&action=-1&m=0&cat=43&filter_action=Фильтр&paged=1&action2=-1’, », ‘dashicons-admin-post’, 9);
После, чего хотелось бы, что бы возле него показывалась количество статей по этой тематике, делаю так :
add_action( ‘admin_menu’, ‘add_user_menu_bubble’ );
function add_user_menu_bubble(){
global $menu;
$my_slug_page = ‘edit.php?s&post_status=all&post_type=post&action=-1&m=0&cat=43&filter_action=Фильтр&aged=1&action2=-1’;
$count = get_category(44)->category_count;
if( $count ){
foreach( $menu as $key => $value ){
if( $menu[$key][2] == ‘m_slug_page’ ){
$menu[$key][0] .= ‘ ‘ . $count . ‘‘;
break;
}
}
}
}
Но, ничего не происходит. В чем моя ошибка, подскажите пожалуйста ?!
Вот это условие скорее всего не работает if( $menu[$key][2] == ‘m_slug_page’ )
Проверьте, что в вашем конкретном случае находится в global $menu.