Как удалить все меню в админ-панели WordPress

Зачем удалять меню в админ-панели WordPress

В стандартной установке WordPress в админ-панели присутствует множество пунктов меню — «Записи», «Медиафайлы», «Страницы», «Комментарии», «Внешний вид», «Плагины», «Пользователи» и другие. Иногда возникает необходимость убрать все или часть этих пунктов. Например, если вы создаёте кастомное решение для клиента с ограниченным доступом, или хотите полностью контролировать интерфейс админки, предоставляя доступ только к нужным разделам.

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

Как работают меню в админ-панели WordPress

Меню WordPress создаются с помощью глобального массива $menu, а подменю — через $submenu. Для удаления пунктов меню обычно используется хук admin_menu с функцией remove_menu_page(). Например:

remove_menu_page('edit.php'); // Удаляет пункт "Записи"

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

Как удалить все меню в админ-панели WordPress: пошаговый пример

Рассмотрим практический пример функции wpclass_remove_all_menus(), которая удаляет абсолютно все пункты меню у пользователя с ролью, например, ниже администратора. Это позволит ограничить доступ к админке.

function wpclass_remove_all_menus() {
    global $menu;
    // Перебираем все пункты меню
    foreach ($menu as $key => $value) {
        // Ключ $value[2] содержит slug меню
        remove_menu_page($value[2]);
    }
}
add_action('admin_menu', 'wpclass_remove_all_menus', 999);

Обратите внимание на приоритет 999 — это нужно, чтобы функция сработала после добавления всех пунктов меню. Без этого некоторые пункты могут остаться.

Добавление исключений для конкретных ролей

Если вы хотите, чтобы администраторам меню не убирались, а для других ролей — убирались, можно добавить проверку:

function wpclass_remove_all_menus() {
    if (!current_user_can('administrator')) {
        global $menu;
        foreach ($menu as $key => $value) {
            remove_menu_page($value[2]);
        }
    }
}
add_action('admin_menu', 'wpclass_remove_all_menus', 999);

Так вы оставите меню для администраторов и скроете для остальных.

Как восстановить нужные пункты меню после удаления всех

Иногда нужно удалить все меню, но оставить пару важных. Например, оставить только пункт «Плагины» и «Пользователи». Для этого можно сделать так:

function wpclass_remove_all_menus_except_some() {
    if (!current_user_can('administrator')) {
        global $menu;
        // Массив slug пунктов, которые нужно оставить
        $exceptions = ['plugins.php', 'users.php'];

        foreach ($menu as $key => $value) {
            if (!in_array($value[2], $exceptions)) {
                remove_menu_page($value[2]);
            }
        }
    }
}
add_action('admin_menu', 'wpclass_remove_all_menus_except_some', 999);

Таким образом, вы гибко управляете интерфейсом админки.

Проверка результатов и отладка

После добавления кода в файл functions.php вашей темы или в кастомный плагин, зайдите в админ-панель под тестовой учетной записью, чтобы убедиться, что меню скрыты как ожидается.

Если меню не скрываются, проверьте, не вызываются ли другие плагины, которые могут переписывать админ-панель. В таких случаях можно увеличить приоритет хука, например до 1000 или выше:

add_action('admin_menu', 'wpclass_remove_all_menus', 1000);

Если вы хотите дополнительно скрыть пункты подменю, используйте remove_submenu_page() по аналогии.

Примеры полезных плагинов для управления меню в WordPress

Если вы не хотите писать код сами, есть проверенные плагины, которые позволяют гибко управлять меню в админке:

  • Admin Menu Editor — очень популярный плагин, который позволяет визуально редактировать, скрывать, переименовывать пункты меню.
  • User Role Editor — кроме ролей, позволяет менять права доступа к меню.
  • White Label CMS — для полного ребрендинга и настройки панели администратора, включая меню.

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

Как разрешить пользователям загружать файлы в WordPress без доступа к админке
14.04.2026
Как удалить неиспользуемые таксономии в WordPress
21.03.2026
Как удалить неиспользуемые виджеты в WordPress для ускорения сайта
09.03.2026
Как использовать Redis для кэширования в WordPress: настройка и примеры
09.02.2026
Как использовать хуки в WordPress: подробное руководство с примерами
26.11.2025