WordPress как на ладони
rgbcode is looking for WordPress developers. Очень Удобный и Быстрый Хостинг для сайтов на WordPress. Пользуюсь сам и вам рекомендую!

Удаление виджетов и метабоксов из консоли 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. Если мы делаем сайт на заказ, то некоторые блоки лучше вообще скрыть, чтобы не было ни блоков, ни галочек в "Настройках экрана".

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

--

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

24 комментария
    Войти