Способ удаления пунктов из админ меню WordPress

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

Я правда не понимаю почему так происходит, и как имея целый набор средств отладки найти предлог для поисков готового сниппета.

Сегодня как можно догадаться  по контексту речь пойдет о удалении пунктов админ меню в WordPress.

Но я попытаюсь не давать вам рыбу, а постараюсь  показать удочку

Нужно отметить что в качестве дебагера я использую плагины Kint Debugger + Debug Bar и опционально Debug Bar Actions and Filters Addon, что бы быстрее находить  нужные action.

Я уже писал ранее о  Kint Debugger, и о том почему он хорош.

Боковое меню:

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

function remove_left_menu_items(){
global $menu;
end($menu);
  d($menu);
}
add_action('admin_menu', 'remove_left_menu_items');

С помощью конструкции d() мы может просмотреть всю структуру переменной $menu

 

Wordpress удаляем пукты  меню (debuger)

И после отфильтровать нужные нам элементы массива,

function remove_menus(){
	global $menu;
        //массив строк по которым мы отфильтруем меню
	$del_items = array(
		'upload.php',
		"index.php"
	);
	end($menu);
	foreach( $menu as $key=>$value ){
                //здесь мы отбрасываем разделители (элементов в них всегда 5)
		if( count($value) > 5 ){
                        //проверяем на совпадение элемента  массива и текущего пункта меню
			if( in_array($value[2] ,$del_items  ) ){
				unset($menu[$key]);
			}
		}
	}
}
add_action('admin_menu', 'remove_menus');

Теперь мы можем удалять не просто те пункты меню которые описаны в примерах , но и те которые просто захотим ( например можно удалить медиафайлы или записи), можно даже кроме записей немного изменить код и удалить разделители, но не это самое важное.

Главное теперь стало намного понятней как все это работает изнутри и надеюсь появилось понимание всей простоты этого кусочка кода.

Верхнее меню:

Здесь все аналогично за исключением того что на входи у нас не массив массивов а объект класса.

function remove_top_menu_items() {
global $wp_admin_bar;
//смотрим содержимое переменной
d($wp_admin_bar);
//удаляем пукт меню
$wp_admin_bar->remove_menu('wp-logo');
}
add_action( 'wp_before_admin_bar_render', 'remove_top_menu_items' );

2015-01-25 15-07-13 Консоль  WordPress - Mozilla Firefox

В контексте функции глобальная переменная $wp_admin_bar содержит объект класса object WP_Admin_Bar с некоторым набором методов, пункты верхнего меню содержатся в nodes.

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

 

P.S. В в репозитории есть несколько плагинов с похожими названиями, в статье говорится конкретно об этом https://wordpress.org/plugins/kint-debugger/

  1. Здравствуйте
    подскажите пож-та
    установили весь набор (как у вас)
    при открытии Kint Debugger в дебагконсоли ни чего не появляется (не открывается)

    версия вп 4,4 — возможно что не будет работать??????

  2. Как не странно , да проблема есть , заключается в том что вы скорее всего поставили плагин который называется Kint PHP Debugger, а тот что я описывал в статье просто Kint Debugger ссылка на правильный

    https://wordpress.org/plugins/kint-debugger/

    работают оба, но мне нравится Kint Debugger больше тем что он может вещать свой вывод на событие Debug bar и поэтому может выводить почти всё что угодно, а Kint PHP Debugger, выводит что то только если в позаботиться о том что бы его вывести где либо в шаблоне например, правильный Kint тоже так может если отключить Debug bar.

    Подытожив ставьте Kint Debugger по ссылке выше и заработает, я проверил.

  3. спасибо! но ставили именно тот что по ссылке 0,3версия Kint Debugger — значит проблема у нас, будем искать, возможно что-то не так делаем…

  4. на чистой — все также…
    в дебагконсоле — нажимаю Object Cache — в правом окне открывает инфо
    нажимаю на Kint Debugger — ничего

  5. :( не заработало
    WordPress 4.4.1 с темой оформления Twenty Sixteen.
    с нуля

    грешу на js… но как исправить незнаю

  6. опера — мозилла — хром все последних версий… тихо…
    а через браузер разве получится посмотреть меню (то что в самой статье)?
    мне как раз надо было получить ID номера категорий админ меню

  7. :) спасибо! но вся проблема в том, что мне нужно переименовать пункт MailPoet (после установки плагина)
    да и вообще раздражает когда плагины вставляют свои меню на «своем» языке…

    да и вообще дебаггер помог бы в работе на будующее

  8. вот так можно по простому дебажить

    function remove_submenu()
    {
        global $submenu;
        var_dump($submenu);
    }
    
    add_action('admin_footer', 'remove_submenu');
    

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *