В этом материале подробно разберём, как создать собственный виджет для панели администратора WordPress. Такие виджеты помогают вывести важную информацию, напоминания или динамические данные прямо на главную страницу админки, что ускоряет работу с сайтом и повышает удобство.
Что такое виджеты админ-панели WordPress и зачем они нужны
Виджеты админ-панели — это маленькие блоки с информацией или инструментами, которые отображаются на главной странице панели администратора (Dashboard). Они бывают стандартными (например, последние записи, активность) и пользовательскими. Создавая свои виджеты, можно вывести любую нужную информацию: данные из внешних сервисов, статистику, напоминания, ссылки на часто используемые разделы и многое другое.
Преимущества создания собственного виджета:
- Повышение продуктивности за счёт быстрого доступа к важной информации.
- Улучшение пользовательского опыта для администраторов и редакторов сайта.
- Возможность интеграции с другими плагинами и сервисами.
Далее покажу, как сделать это максимально просто и эффективно.
Добавление виджета на панель администратора WordPress — базовый пример
Чтобы добавить свой виджет, нужно использовать хук wp_dashboard_setup и функцию add_meta_box. Вот минимальный пример, который добавляет виджет с приветственным сообщением:
function wptem_add_dashboard_widget() {
wp_add_dashboard_widget(
'wptem_custom_widget',
'Приветствие от WPTem',
'wptem_custom_widget_display'
);
}
add_action('wp_dashboard_setup', 'wptem_add_dashboard_widget');
function wptem_custom_widget_display() {
echo '<p>Добро пожаловать в админ-панель вашего сайта на WordPress!</p>';
}Этот код добавляет простой виджет с заголовком и текстом. Чтобы его использовать, достаточно вставить в файл functions.php вашей темы или в отдельный плагин.
Разбор кода
wp_add_dashboard_widget принимает три параметра: уникальный ID виджета, название заголовка и функцию, которая выводит содержимое. В нашем случае функция wptem_custom_widget_display просто выводит строку с приветствием.
Добавление динамического контента в виджет: пример с выводом статистики
Один из частых кейсов — вывод статистики по сайту, например, количество опубликованных записей, комментариев, страниц. Сделаем такой виджет.
function wptem_dashboard_stats_widget() {
wp_add_dashboard_widget(
'wptem_stats_widget',
'Статистика сайта',
'wptem_stats_widget_display'
);
}
add_action('wp_dashboard_setup', 'wptem_dashboard_stats_widget');
function wptem_stats_widget_display() {
$posts_count = wp_count_posts()->publish;
$pages_count = wp_count_posts('page')->publish;
$comments_count = wp_count_comments()->approved;
echo '<ul>';
echo '<li>Опубликованных записей: ' . $posts_count . '</li>';
echo '<li>Опубликованных страниц: ' . $pages_count . '</li>';
echo '<li>Одобренных комментариев: ' . $comments_count . '</li>';
echo '</ul>';
}Этот виджет обновляет данные динамически при каждом заходе в админку и помогает быстро оценить состояние сайта.
Добавление кастомных настроек и кнопок в виджет
Для удобства можно добавить в виджет кнопки или ссылки, которые выполняют полезные действия, например, очистку кэша, переход к настройкам плагина или запуск скрипта.
Пример виджета с кнопкой, которая запускает AJAX-запрос для очистки кэша с помощью плагина Clearfy Pro (если он установлен):
function wptem_clear_cache_widget() {
wp_add_dashboard_widget('wptem_clear_cache', 'Очистка кэша', 'wptem_clear_cache_widget_display');
}
add_action('wp_dashboard_setup', 'wptem_clear_cache_widget');
function wptem_clear_cache_widget_display() {
?>
<button id="wptem_clear_cache_btn" class="button button-primary">Очистить кэш</button>
<div id="wptem_clear_cache_result" style="margin-top:10px;"></div>
<script>
document.getElementById('wptem_clear_cache_btn').addEventListener('click', function() {
var btn = this;
btn.disabled = true;
btn.textContent = 'Идёт очистка...';
fetch(ajaxurl + '?action=wptem_clear_cache_ajax')
.then(response => response.json())
.then(data => {
document.getElementById('wptem_clear_cache_result').textContent = data.message;
btn.disabled = false;
btn.textContent = 'Очистить кэш';
});
});
</script>
<?php
}
add_action('wp_ajax_wptem_clear_cache_ajax', 'wptem_clear_cache_ajax_handler');
function wptem_clear_cache_ajax_handler() {
if (function_exists('clearfy_pro_clear_cache')) {
clearfy_pro_clear_cache();
wp_send_json(['message' => 'Кэш успешно очищен']);
} else {
wp_send_json(['message' => 'Плагин Clearfy Pro не активен или функция не доступна']);
}
} Этот код добавляет кнопку, при нажатии на которую происходит AJAX-запрос, вызывающий функцию очистки кэша плагина Clearfy Pro. Если плагин не установлен, выводится сообщение об ошибке. Такая интеграция полезна для быстрого управления сайтом без перехода в настройки.
Настройка расположения виджета и прав доступа
По умолчанию виджеты появляются на главной странице админки, но можно регистрировать их и на других страницах с помощью дополнительных параметров. Также рекомендуется ограничивать доступ к виджетам, чтобы их видели только администраторы или редакторы.
Пример ограничения по правам:
function wptem_add_dashboard_widget_with_permission() {
if (current_user_can('manage_options')) { // Только админы
wp_add_dashboard_widget('wptem_admin_only_widget', 'Виджет только для админов', 'wptem_admin_only_widget_display');
}
}
add_action('wp_dashboard_setup', 'wptem_add_dashboard_widget_with_permission');
function wptem_admin_only_widget_display() {
echo '<p>Этот виджет виден только администраторам.</p>';
}Так вы можете создавать виджеты, которые будут доступны только определённым ролям пользователей.
Резюме и рекомендации
Создание собственных виджетов для панели администратора — мощный способ персонализировать и улучшить работу с сайтом на WordPress. Используйте приведённые примеры как основу и адаптируйте под свои задачи:
- Выводите важную статистику и данные из сторонних сервисов.
- Добавляйте кнопки и формы для быстрого взаимодействия с плагинами.
- Ограничивайте доступ к виджетам по ролям пользователей.
- Интегрируйте виджеты с REST API и AJAX для динамического обновления.
Если хотите расширить возможности, рекомендую посмотреть плагин Expert Review — он позволяет создавать обзоры и рейтинги, которые можно выводить в виджетах для админки и фронтенда.