Как полностью удалить все виджеты с панели управления WordPress
Мне нужна полностью пустая панель управления WordPress - без виджетов и желательно с одной колонкой.
Есть фрагменты кода для удаления стандартных виджетов WordPress, но ничего не нашёл о виджетах, добавленных плагинами. Поискал везде, но похоже этот вопрос ещё не задавали.

Из этого Q&A я узнал о глобальной переменной $wp_meta_boxes
. Там же приведён код для удаления стандартных метабоксов.
После изучения переменной я написал следующий код для удаления всех виджетов Dashboard, включая добавленные плагинами:
add_action('wp_dashboard_setup', 'wpse_73561_remove_all_dashboard_meta_boxes', 9999 );
function wpse_73561_remove_all_dashboard_meta_boxes()
{
global $wp_meta_boxes;
$wp_meta_boxes['dashboard']['normal']['core'] = array();
$wp_meta_boxes['dashboard']['side']['core'] = array();
}
Ответ на вопрос о принудительном отображении одной колонки в настройках экрана взят отсюда:
add_filter( 'get_user_option_screen_layout_dashboard', 'wpse_4552_one_column_layout' );
function wpse_4552_one_column_layout( $cols ) {
if( current_user_can( 'basic_contributor' ) )
return 1;
return $cols;
}
Этот ответ предоставил код для скрытия вкладок Параметры экрана и Помощь:
add_filter( 'contextual_help', 'wpse_25034_remove_dashboard_help_tab', 999, 3 );
add_filter( 'screen_options_show_screen', 'wpse_25034_remove_help_tab' );
function wpse_25034_remove_dashboard_help_tab( $old_help, $screen_id, $screen )
{
if( 'dashboard' != $screen->base )
return $old_help;
$screen->remove_help_tabs();
return $old_help;
}
function wpse_25034_remove_help_tab( $visible )
{
global $current_screen;
if( 'dashboard' == $current_screen->base )
return false;
return $visible;
}
Хорошо, теперь в Dashboard почти ничего нет, что дальше?
Немного CSS для скрытия icon-index
и H2 заголовка
, и немного jQuery для заполнения пустоты:
add_action( 'admin_head-index.php', 'wpse_73561_dashboard_scripts' );
function wpse_73561_dashboard_scripts() {
?>
<style>#icon-index, .wrap h2 {display:none}</style>
<script language="javascript" type="text/javascript">
jQuery(document).ready(function($) {
fillTheVoid(); // скоро на StackOverflow
});
</script>
<?php
}
[ обновление ]
Заполнение пустоты можно найти на StackOverflow.
Используйте функцию wpse_73561_dashboard_scripts
вместо данной.

Это хорошо, но не удаляет метабоксы, добавленные плагинами, такими как Gravity Forms. Если вы хотите удалить даже те, что добавлены плагинами, вам нужно добавить высокий приоритет к вызову действия, например: add_action('wp_dashboard_setup', 'remove_dashboard_widgets', 99999);

Удаление стандартных метабоксов WordPress в админ-панели:
@source https://github.com/vincentorback/clean-wordpress-admin/blob/master/dashboard.php
/**
* Удаление виджетов админ-панели.
*
* @link https://developer.wordpress.org/reference/functions/remove_meta_box/
*/
add_action(
'wp_dashboard_setup',
function () {
// Удаление панели 'Добро пожаловать'
remove_action( 'welcome_panel', 'wp_welcome_panel' );
// Удаление метабокса 'Состояние сайта'
remove_meta_box( 'dashboard_site_health', 'dashboard', 'normal' );
// Удаление метабокса 'Обзор'
remove_meta_box( 'dashboard_right_now', 'dashboard', 'normal' );
// Удаление метабокса 'Активность'
remove_meta_box( 'dashboard_activity', 'dashboard', 'normal' );
// Удаление метабокса 'Новости WordPress'
remove_meta_box( 'dashboard_primary', 'dashboard', 'side' );
// Удаление метабокса 'Быстрый черновик'
remove_meta_box( 'dashboard_quick_press', 'dashboard', 'side' );
}
);
Удаление всех метабоксов WordPress в админ-панели (включая плагины):
@source: неизвестен
add_action('wp_dashboard_setup', 'kdev_remove_dw', 999 );
function kdev_remove_dw() {
global $wp_meta_boxes;
$wp_meta_boxes = array();
}

Если вы хотите скрыть все виджеты панели управления, КРОМЕ созданных вами пользовательских:
Измените приоритеты действий, чтобы сначала удалить все стандартные виджеты, а затем добавить свои:
//Удаляем все стандартные виджеты панели управления
add_action('wp_dashboard_setup', 'remove_all_dashboard_widgets', 100 );
function remove_all_dashboard_widgets() {
global $wp_meta_boxes;
$wp_meta_boxes = [];
}
//Добавляем пользовательские виджеты
add_action('wp_dashboard_setup', 'my_dashboard_widgets', 999);
function my_dashboard_widgets() {
wp_add_dashboard_widget(
'my_dashboard_widget', // Идентификатор виджета
'Мой виджет панели управления', // Заголовок виджета
'my_dashboard_widget_content' // Функция вывода содержимого
);
}
//Содержимое виджета
function my_dashboard_widget_content() {
//Здесь размещаем содержимое
//Можно использовать WP_Query для вывода записей или других данных...
}
