Удаление виджетов и метабоксов из консоли 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), а не удаляет их из кода.
- Если мы делаем сайт на заказ, то некоторые блоки лучше вообще скрыть, чтобы не было ни блоков, ни галочек в "Настройках экрана".
Чтобы избежать этих недостатков, виджеты можно убрать на программном уровне, использовав remove_meta_box(). Такой код в файле темы functions.php:
add_action('wp_dashboard_setup', 'remove_dashboard_widgets'); function remove_dashboard_widgets () { remove_meta_box('dashboard_primary', 'dashboard', 'side' ); remove_meta_box('dashboard_secondary', 'dashboard', 'side' ); }
Или так:
## Удаление виджетов из Консоли 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. Оставьте только те, который вам нужно удалить.
Удаление Метабоксов из Консоли Сети сайтов (мультисайт)
Здесь все делается точно также, только нужно использовать хук 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 }
--
Помимо удаления виджетов, можно также создавать свои. Как это делать описано в: