Функция wp_add_dashboard_widget() регистрирует виджеты на основной панели администратора (dashboard) и в панелях мультисайта. Эта функция позволяет добавлять метабоксы на панели управления, предоставляя администраторам возможность видеть важные данные или выполнять определенные действия.
wp_add_dashboard_widget(
    $widget_id,
    $widget_name,
    $widget_function,
    $control_function = null,
    $callback_args = null,
    $context = 'normal',
    $priority = 'core'
);
Параметры
- $widget_id (string) (обязательный): Уникальный идентификатор для виджета. Этот идентификатор используется как класс CSS для блока виджета и как ключ в массиве виджетов.
 - $widget_name (string) (обязательный): Название виджета, которое будет отображаться в заголовке виджета на панели управления.
 - $widget_function (callable) (обязательный): Функция, которая выводит содержимое виджета. Эта функция должна генерировать HTML-код для отображения.
 - $control_function (callable) (необязательный): Функция для обработки формы настроек виджета. В этой функции происходит вывод HTML формы настроек и сохранение их значений. Если настройки не требуются, параметр можно установить в 
null. - $callback_args (array) (необязательный): Массив аргументов, передаваемых функции отображения виджета. Этот параметр позволяет передавать дополнительные данные в функцию обратного вызова.
 - $context (string) (необязательный, начиная с WP 5.6): Контекст экрана, где виджет должен отображаться. Возможные значения: ‘normal’, ‘side’, ‘column3’, ‘column4’. По умолчанию установлено ‘normal’.
 - $priority (string) (необязательный, начиная с WP 5.6): Приоритет отображения виджета в указанном контексте. Возможные значения: ‘high’, ‘core’, ‘default’, ‘low’. По умолчанию установлено ‘core’.
 
Как это работает
Функция wp_add_dashboard_widget() добавляет виджеты в консоль, используя механизм, основанный на функции add_meta_box(). Виджеты могут быть добавлены не только на основную панель администрирования, но и в панель сети сайтов (multisite) и даже в личные панели пользователей.
Хуки для добавления виджетов
Чтобы виджеты работали корректно, их нужно добавлять в соответствующие события:
wp_dashboard_setup— для добавления виджетов в консоль сайта (блога).wp_network_dashboard_setup— для добавления виджетов в консоль сети сайтов в режиме мультисайта.wp_user_dashboard_widgets— для добавления виджетов в личные панели пользователей.
Эти хуки используются для регистрации виджетов и должны быть добавлены в функции, которые вызывают wp_add_dashboard_widget().
Пример 1: Добавление виджета в консоль
/ Регистрация виджета для консоли
add_action('wp_dashboard_setup', 'add_custom_dashboard_widget');
function add_custom_dashboard_widget() {
    wp_add_dashboard_widget(
        'custom_dashboard_widget_id', // Уникальный идентификатор виджета
        'Мой Кастомный Виджет', // Название виджета
        'display_custom_dashboard_widget' // Функция для отображения содержимого виджета
    );
}
function display_custom_dashboard_widget() {
    echo '<h3>Привет, мир!</h3>';
    echo '<p>Добро пожаловать в мой кастомный виджет на панели управления!</p>';
}
Пример 2: Добавление виджета в консоль сети сайтов (multisite)
// Регистрация виджета для консоли сети сайтов
add_action('wp_network_dashboard_setup', function() {
    wp_add_dashboard_widget(
        'network_dashboard_widget_id', // Уникальный идентификатор виджета
        'Виджет Сети Сайтов', // Название виджета
        'display_network_dashboard_widget' // Функция для отображения содержимого виджета
    );
});
function display_network_dashboard_widget() {
    echo '<h3>Привет из сети сайтов!</h3>';
    echo '<p>Этот виджет отображается на панели управления сети сайтов.</p>';
}
Пример 3: Изменение расположения виджета
Функция wp_add_dashboard_widget() по умолчанию размещает виджеты в конце первого столбика (слева). Чтобы изменить расположение виджета, можно использовать функцию add_meta_box(), которая предоставляет возможность указать контекст и приоритет размещения виджета.
Для размещения виджета в правом столбце:
add_action('wp_dashboard_setup', function() {
    add_meta_box(
        'custom_meta_box_id', // Уникальный идентификатор метабокса
        'Название Метабокса', // Название метабокса
        'display_custom_meta_box', // Функция для отображения содержимого метабокса
        'dashboard', // Контекст (основная панель)
        'side', // Местоположение (правый столбец)
        'high' // Приоритет отображения
    );
});
function display_custom_meta_box() {
    echo '<p>Этот метабокс размещен в правом столбце.</p>';
}
Для сети сайтов (multisite) в параметре контекста указывайте 'dashboard-network':
add_action('wp_network_dashboard_setup', function() {
    add_meta_box(
        'network_meta_box_id',
        'Название Метабокса Сети Сайтов',
        'display_network_meta_box',
        'dashboard-network',
        'normal',
        'high'
    );
});
function display_network_meta_box() {
    echo '<p>Этот метабокс отображается на панели управления сети сайтов.</p>';
}
Заключение
Функция wp_add_dashboard_widget() представляет собой мощный инструмент для расширения функциональности панели управления WordPress. Используя её, вы можете создавать и добавлять кастомные виджеты, которые улучшат удобство и информативность администрирования сайта. Непосредственная работа с виджетами осуществляется через функцию add_meta_box(), что дает вам дополнительную гибкость в размещении и настройке виджетов.