Как убрать лишнее из админки WordPress
Расскажу честно: пять лет назад я открывал админку WordPress и чувствовал лёгкое раздражение. Виджеты на главной, которые никто не смотрит, пункты меню для функций, которыми клиент никогда не воспользуется, уведомления о плагинах, обновлениях, каких-то акциях. Особенно тяжело было наблюдать за реакцией клиентов — людей, которые просто хотели опубликовать статью или изменить цену на товар, а видели перед собой панель управления космическим кораблём.
С тех пор чистка админки стала для меня обязательным этапом в каждом проекте. Делюсь тем, что реально работает.
Зачем это делать
Не только для эстетики. Захламлённая админка — это:
- Больше кликов и времени на рутинные задачи;
- Риск, что клиент случайно нажмёт что-то не то;
- Лишняя нагрузка на сервер от ненужных скриптов и запросов;
- Плохое первое впечатление от сайта, которое клиент переносит на вас как на разработчика.
Убираем виджеты с главной панели
Первое, что видит пользователь после входа — Dashboard с виджетами «Новости WordPress», «Быстрый черновик», статистика активности. Большинству это не нужно.
Вставляю это в functions.php:
function my_remove_dashboard_widgets() {
remove_meta_box('dashboard_incoming_links', 'dashboard', 'normal');
remove_meta_box('dashboard_primary', 'dashboard', 'normal');
remove_meta_box('dashboard_secondary', 'dashboard', 'normal');
remove_meta_box('dashboard_quick_press', 'dashboard', 'side');
remove_meta_box('dashboard_recent_drafts', 'dashboard', 'side');
remove_meta_box('dashboard_recent_comments', 'dashboard', 'normal');
remove_meta_box('dashboard_right_now', 'dashboard', 'normal');
remove_meta_box('dashboard_activity', 'normal', 'core');
}
add_action('wp_dashboard_setup', 'my_remove_dashboard_widgets');
Чистим меню админки
Пункты меню — главная боль. Комментарии, если сайт не блог с обсуждениями, инструменты, которые никто не открывает, лишние настройки.
function my_remove_menu_pages() {
remove_menu_page('edit-comments.php');
remove_menu_page('tools.php');
remove_menu_page('edit.php'); // если посты не нужны
}
add_action('admin_menu', 'my_remove_menu_pages');
Важный момент: перед тем как убирать пункт «Посты», убедитесь, что клиент действительно не будет вести блог. Часто проще спрятать, чем потом объяснять, куда всё пропало.
Убираем ненужные метабоксы со страниц редактирования
На странице редактирования записи или страницы висят блоки, которые загромождают интерфейс: «Формат», «Теги», виджет обмена в соцсетях от какого-то плагина.
function my_remove_post_metaboxes() {
remove_meta_box('postcustom', 'post', 'normal');
remove_meta_box('commentstatusdiv', 'post', 'normal');
remove_meta_box('trackbacksdiv', 'post', 'normal');
}
add_action('admin_menu', 'my_remove_post_metaboxes');
Отключаем панель уведомлений сверху
Верхняя чёрная полоса с логотипом WordPress и количеством обновлений часто не нужна редактору сайта.
show_admin_bar(false);
Или точечно, только для определённых ролей:
function my_disable_admin_bar_for_roles() {
if (!current_user_can('administrator')) {
show_admin_bar(false);
}
}
add_action('after_setup_theme', 'my_disable_admin_bar_for_roles');
Скрываем уведомления от плагинов
Это отдельная головная боль. Плагины вроде Yoast SEO, WooCommerce и десятки других любят вешать в самом верху страницы рекламные баннеры и просьбы поставить оценку.
function my_remove_admin_notices() {
remove_all_actions('admin_notices');
remove_all_actions('all_admin_notices');
}
add_action('admin_print_scripts', 'my_remove_admin_notices');
Осторожно с этим методом — он убирает вообще все уведомления, включая важные системные. Я использую его точечно, обычно оставляя проверку на права администратора.
Ограничиваем доступ по ролям через плагины
Ручной код — это хорошо, но если проект большой и меняется часто, я рекомендую плагин Admin Menu Editor или User Role Editor. Они дают визуальный интерфейс для скрытия пунктов меню под конкретные роли без необходимости лезть в код каждый раз.
Для полного контроля над интерфейсом редактирования беру Advanced Custom Fields в связке со скрытием стандартных метабоксов — так я показываю клиенту только те поля, которые реально нужны для конкретного типа контента.
Убираем виджет «Здравствуйте» и версию WordPress в футере
Мелочь, но приятная:
function my_remove_footer_admin() {
return '';
}
add_filter('admin_footer_text', 'my_remove_footer_admin');
add_filter('update_footer', 'my_remove_footer_admin', 11);
Мой личный подход к процессу
Я не чищу админку вслепую. Сначала наблюдаю, как клиент реально работает с сайтом первую неделю после запуска, или беру интервью — что использует, что игнорирует. Только после этого формирую финальный список того, что скрыть. Иначе легко убрать что-то нужное и получить недовольного клиента, который не может найти привычную функцию.
Весь код я собираю в один служебный плагин под названием что-то в духе site-admin-cleanup.php, а не раскидываю по functions.php темы. Это спасает при смене темы — настройки админки остаются нетронутыми.
Итог
Чистая админка — это не про минимализм ради минимализма. Это про уважение к времени человека, который будет с этим интерфейсом работать каждый день. Потратив пару часов на настройку, вы экономите десятки часов чужого раздражения и путаницы в будущем. А клиенты, кстати, это замечают и ценят — часто именно такие детали формируют репутацию разработчика как внимательного к деталям профессионала.