В процессе настройки WordPress часто возникает необходимость убрать из админ-панели ненужные разделы меню. Это может быть связано с упрощением интерфейса для клиентов или с ограничением доступа к определённым функциям. Однако простое удаление раздела из меню может привести к потере доступа к важным функциям или вызвать ошибки, если эти разделы используются в шаблонах или плагинах.
Почему просто удалять меню в WordPress не всегда безопасно
Удаление пунктов меню в WordPress обычно происходит через функцию remove_menu_page(). Но если раздел отвечает за важные настройки или функционал, пользователи могут потерять возможность управлять сайтом полноценно. Кроме того, некоторые плагины или темы могут обращаться к этим разделам, и их удаление приведёт к сбоям.
Поэтому важно не просто спрятать пункт меню, а сохранить доступ к его функциям через альтернативные пути, например, через прямые ссылки или кастомные страницы.
Как корректно удалить раздел меню с сохранением функциональности
Ниже приведён пример функции, которая удаляет пункт меню с сохранением доступа к функционалу через прямой URL. Допустим, мы хотим убрать раздел «Комментарии» из меню.
function wpdo_remove_comments_menu() {
// Удаляем пункт меню "Комментарии"
remove_menu_page('edit-comments.php');
}
add_action('admin_menu', 'wpdo_remove_comments_menu', 999);
После этого пункт меню исчезнет, но доступ к списку комментариев по прямому URL /wp-admin/edit-comments.php останется. Чтобы упростить пользователям навигацию, можно добавить ссылку на эту страницу в другое место, например, в пользовательский виджет или панель.
Добавление ссылки на скрытую страницу в пользовательский виджет
Для удобства пользователей создадим простой виджет, который будет содержать ссылку на скрытую страницу:
class WPDO_Comments_Link_Widget extends WP_Widget {
function __construct() {
parent::__construct(
'wpdo_comments_link',
'Ссылка на комментарии'
);
}
function widget($args, $instance) {
echo $args['before_widget'];
echo '<a href="' . admin_url('edit-comments.php') . '">Управление комментариями</a>';
echo $args['after_widget'];
}
}
function wpdo_register_comments_link_widget() {
register_widget('WPDO_Comments_Link_Widget');
}
add_action('widgets_init', 'wpdo_register_comments_link_widget');
Теперь, даже если пункт меню скрыт, пользователь сможет перейти к управлению комментариями через виджет.
Удаление других разделов меню с учётом особенностей
Подобный подход можно применять и к другим разделам, например, «Записи», «Медиафайлы» или «Плагины».
Например, чтобы убрать пункт «Плагины» из меню, но сохранить доступ к списку плагинов по прямому URL:
function wpdo_remove_plugins_menu() {
remove_menu_page('plugins.php');
}
add_action('admin_menu', 'wpdo_remove_plugins_menu', 999);
При необходимости можно создавать аналогичные виджеты или добавлять кнопки в другие разделы админки для сохранения удобства навигации.
Ограничение доступа к скрытым страницам
Если вы хотите не только убрать пункт меню, но и ограничить доступ к разделу для определённых ролей без удаления функционала, используйте проверку ролей в хуках:
function wpdo_restrict_plugins_page() {
if (!current_user_can('manage_options')) {
wp_redirect(admin_url());
exit;
}
}
add_action('load-plugins.php', 'wpdo_restrict_plugins_page');
Так вы сможете скрыть меню и одновременно заблокировать доступ к странице для нежелательных пользователей.
Использование плагинов для управления меню и доступом
Если не хочется писать код, можно применить готовые плагины. Например:
- Adminimize — позволяет скрывать любые элементы админки для разных ролей.
- WP Menu Editor — простой редактор меню админки.
- Clearfy Pro — комплексный плагин для оптимизации и управления настройками WordPress, включая меню.
Эти плагины позволяют максимально гибко настроить интерфейс админки без риска сломать функционал.
Итоги и рекомендации
Удалять разделы меню в WordPress стоит аккуратно, чтобы не нарушить работу сайта и не усложнить жизнь пользователям. Лучший подход — удалять пункты меню, но сохранять доступ к функционалу через прямые ссылки и добавлять альтернативные пути навигации.
Также не забывайте о контроле доступа — сочетайте скрытие меню с проверками ролей, чтобы защитить важные разделы от неавторизованных пользователей.
Если вы хотите автоматизировать и упростить этот процесс, воспользуйтесь готовыми плагинами или кастомными виджетами, как показано в примерах.