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

Опубликовано: 01.09.2018

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

Как расширить (сузить) сайдбар (боковую колонку)на сайте

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



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

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

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


Как вывести меню Wordpress в теме. Все аргументы wp_nav_menu(). Области для меню. Урок #2

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

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

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


WordPress блог, админ панель. 1 часть. Chironova.ru

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

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

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

 

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

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' );

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

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

 

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

rss