Удаление виджетов и метабоксов из консоли WordPress
Чтобы удобнее было работать в админке WordPress, иногда нужно отключить метабоксы и виджеты, В этой которой заметке посмотрим как это сделать.
Удаление Виджетов со страницы виджетов
Вариант 1: Чтобы отключить базовые виджеты в WordPress используйте такой код:
## Выборочно отключаем стандартные виджеты WordPress add_action( 'widgets_init', 'unregister_basic_widgets' ); function unregister_basic_widgets() { unregister_widget('WP_Widget_Pages'); // Виджет страниц unregister_widget('WP_Widget_Calendar'); // Календарь unregister_widget('WP_Widget_Archives'); // Архивы unregister_widget('WP_Widget_Links'); // Ссылки unregister_widget('WP_Widget_Meta'); // Мета виджет unregister_widget('WP_Widget_Search'); // Поиск unregister_widget('WP_Widget_Text'); // Текст unregister_widget('WP_Widget_Categories'); // Категории unregister_widget('WP_Widget_Recent_Posts'); // Последние записи unregister_widget('WP_Widget_Recent_Comments'); // Последние комментарии unregister_widget('WP_Widget_RSS'); // RSS unregister_widget('WP_Widget_Tag_Cloud'); // Облако меток unregister_widget('WP_Nav_Menu_Widget'); // Меню unregister_widget('WP_Widget_Media_Audio'); // Audio unregister_widget('WP_Widget_Media_Video'); // Video unregister_widget('WP_Widget_Media_Gallery'); // Gallery unregister_widget('WP_Widget_Media_Image'); // Image unregister_widget('WP_Widget_Custom_HTML'); // Произвольный HTML код unregister_widget('WP_Widget_Block'); // Блок }
Вариант 2: Чтобы отключить все виджеты в WordPress, а также отключить возможно регистрировать любые виджеты через хук widgets_init используйте такой код:
## Отключаем все виджеты WordPress и все виджеты, созданные на хуке widgets_init remove_action( 'init', 'wp_widgets_init', 1 );
Используйте этот код в файле темы functions.php.
Подробнее о том как удалять виджеты и другие тонкости читайте в описании функции unregister_widget()
Удаление Метабоксов из Консоли сайта
Если в консоли WordPress не нужны какие-либо блоки (виджеты), то обычно они отключаются в «Настройках экрана» - всплывающее окошко, которое позволяет галочками выбрать нужные нам блоки.
Однако у такого способа отключения виджетов есть как минимум 2 недостатка:
-
Выключение галочками, лишь скрывает блоки (средствами CSS), а не удаляет их из кода.
- Если мы делаем сайт на заказ, то некоторые блоки лучше вообще скрыть, чтобы не было ни блоков, ни галочек в "Настройках экрана".
Чтобы избежать этих недостатков, виджеты можно убрать на программном уровне, использовав такой код в файле темы functions.php:
## Удаление виджетов из Консоли WordPress add_action( 'wp_dashboard_setup', 'clear_wp_dash' ); function clear_wp_dash(){ $dash_side = & $GLOBALS['wp_meta_boxes']['dashboard']['side']['core']; $dash_normal = & $GLOBALS['wp_meta_boxes']['dashboard']['normal']['core']; unset( $dash_side['dashboard_quick_press'] ); // Быстрая публикация unset( $dash_side['dashboard_recent_drafts'] ); // Последние черновики unset( $dash_side['dashboard_primary'] ); // Блог WordPress unset( $dash_side['dashboard_secondary'] ); // Другие Новости WordPress unset( $dash_normal['dashboard_incoming_links'] ); // Входящие ссылки unset( $dash_normal['dashboard_right_now'] ); // Прямо сейчас unset( $dash_normal['dashboard_recent_comments'] ); // Последние комментарии unset( $dash_normal['dashboard_plugins'] ); // Последние Плагины unset( $dash_normal['dashboard_activity'] ); // Активность unset( $dash_normal['dashboard_site_health'] ); // Здоровье сайта ## Удаление виджета "Добро пожаловать" remove_action( 'welcome_panel', 'wp_welcome_panel' ); }
В коде я подписал какая строка за какой виджет отвечает. Здесь я специально показал все стандартные блоки Консоли WordPress, в действительности в коде нужно оставить только те строки которые отвечают за виджеты, которые нужно удалить (пардон за тавтологию). Я в коде их не удалил, а закомментировал, т.е, если данный код поместить в файл темы functions.php, то в Консоли WordPress останется всего 2 виджета: Полседние черновики и Прямо сейчас.
Удаление Метабоксов из Консоли Сети сайтов (мультисайт)
Здесь все делается точно также, только нужно использовать хук wp_network_dashboard_setup
:
## Удаление виджетов из Консоли WordPress Multisite add_action( 'wp_network_dashboard_setup', 'clear_wp_network_dash' ); function clear_wp_network_dash(){ $dash_normal = & $GLOBALS['wp_meta_boxes']['dashboard-network']['normal']['core']; $dash_side = & $GLOBALS['wp_meta_boxes']['dashboard-network']['side']['core']; unset( $dash_normal['network_dashboard_right_now'] ); // Прямо сейчас unset( $dash_side['dashboard_primary'] ); // Новости и мероприятия WordPress }
--
Помимо удаления виджетов, можно также создавать свои. Как это делать описано в: