Удаление виджетов и метабоксов из консоли 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 недостатка:

  1. Выключение галочками, лишь скрывает блоки (средствами CSS), а не удаляет их из кода.

  2. Если мы делаем сайт на заказ, то некоторые блоки лучше вообще скрыть, чтобы не было ни блоков, ни галочек в "Настройках экрана".

Чтобы избежать этих недостатков, виджеты можно убрать на программном уровне, использовав 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
}

--

Помимо удаления виджетов, можно также создавать свои. Как это делать описано в:

25 комментариев
    Войти