Панель управления WordPress — отличное место для управления всеми видами данных и информацией об обновлениях движка. В этом практическом руководстве мы рассмотрим, как использовать такие виджеты и создавать собственные настраиваемые виджеты. Мы напишем простой плагин для этой цели, который можно использовать практически с любой темой оформления.
| Скачать исходники |
1. Создание плагина
Создаем новую папку в директории плагинов (wp-content/plugins) и поместим в нее файл dashboard_widgets.php.
<?php /* Plugin Name: Wptuts+ Dashboard Widgets Plugin URI: Description: Create custom dashboard widgets Version: 0.1 Author: Guillaume Voisin Author URI: http://wp.tutsplus.com/author/guillaumevoisin License: GPL2 */
Сохраните файл — и он будет доступен для активации на странице плагинов.
А теперь займемся написанием класса для управления всеми нужными нам функциями.
class Wptuts_Dashboard_Widgets {
function __construct() {
add_action( 'wp_dashboard_setup', array( $this, 'remove_dashboard_widgets' ) );
add_action( 'wp_dashboard_setup', array( $this, 'add_dashboard_widgets' ) );
}
function remove_dashboard_widgets() {
}
function add_dashboard_widgets() {
}
}
$wdw = new Wptuts_Dashboard_Widgets();Для этой цели будем использовать wp_dashboard_setup (для связи двух функций):
- remove_dashboard_widgets будет применяться для удаления виджетов, доступных по умолчанию.
- add_dashboard_widgets мы используем, чтобы добавить собственные виджеты.
Обратите внимание: мы связываем две функции следующим образом: array( $this, 'remove_dashboard_widgets' ). Поскольку обе функции входят в 1 класс, то нам надо указать WordPress, какая из функция к какому классу принадлежит.
2. Определяем список виджетов
Создадим еще один файл под названием custom_widgets.php. Он будет содержать определения наших виджетов (чтобы удалить стандартные виджеты и добавить наши собственные).
Для начала выберем, какие виджеты мы хотим удалить. По сути, это — любой массив с идентификаторами удаляемых виджетов + информация о том, где их удалить (page и context).
Для этой цели воспользуемся функцией remove_meta_box(), поскольку виджеты в Панели управления работают как мета-боксы. У этой функции есть 3 аргумента:
- ID
- Page — где мы можем найти этот виджет (консоль / пост / вложение / … )
- Context — в какой области расположен виджет (в обычной / в расширенной / в боковой части сайта)
А теперь добавим данные параметры:
$remove_defaults_widgets = array(
'dashboard_incoming_links' => array(
'page' => 'dashboard',
'context' => 'normal'
),
'dashboard_right_now' => array(
'page' => 'dashboard',
'context' => 'normal'
),
'dashboard_recent_drafts' => array(
'page' => 'dashboard',
'context' => 'side'
),
'dashboard_quick_press' => array(
'page' => 'dashboard',
'context' => 'side'
),
'dashboard_plugins' => array(
'page' => 'dashboard',
'context' => 'normal'
),
'dashboard_primary' => array(
'page' => 'dashboard',
'context' => 'side'
),
'dashboard_secondary' => array(
'page' => 'dashboard',
'context' => 'side'
),
'dashboard_recent_comments' => array(
'page' => 'dashboard',
'context' => 'normal'
)
);Затем определимся, какие из настраиваемых виджетов мы хотим добавить. Для добавления настраиваемых WordPress-виджетов надо использовать встроенную функцию wp_add_dashboard_widget(). У нее есть несколько аргументов:
- ID
- Title — заголовок виджета.
- Callback — функция, которая отвечает за контент виджета.
Давайте определим эти параметры и настроим наш виджет: создаем очень простой виджет в панели, который будет показывать последние посты, опубликованные недавними пользователями.
$custom_dashboard_widgets = array(
'my-dashboard-widget' => array(
'title' => 'My Dashboard Widget',
'callback' => 'dashboardWidgetContent'
)
);Добавляем функцию для управления контентом виджета:
function dashboardWidgetContent() {
$user = wp_get_current_user();
echo "Hello <strong>" . $user->user_login . "</strong>, this is your custom widget. You can, for instance, list all the posts you've published:";
$r = new WP_Query( apply_filters( 'widget_posts_args', array(
'posts_per_page' => 10,
'post_status' => 'publish',
'author' => $user->ID
) ) );
if ( $r->have_posts() ) :
?>
<?php
endif;
}А теперь определяем те виджеты, которые мы хотим убрать из Панели управления, а также те, которые хотим добавить. После этого можем сосредоточиться на дальнейшей настройке нашего класса функций.
3. Немного магии
Вернемся к классу, который мы создавали на первом шаге. Для начала давайте включим определения для наших виджетов, чтобы они были доступны для нашего класса. Для этого надо внести следующую строку кода в файл dashboard_widgets.php:
require_once( plugin_dir_path( __FILE__ ) . '/custom_widgets.php' );
Как удалить виджеты
function remove_dashboard_widgets() {
global $remove_defaults_widgets;
foreach ( $remove_defaults_widgets as $wigdet_id => $options ) {
remove_meta_box( $wigdet_id, $options['page'], $options['context'] );
}
}Для удаления виджетов просто введем цикл для массива $remove_defaults_widgets и применим функцию remove_meta_box с отдельными параметрами для каждого из виджетов.
Убедитесь, что включили глобальные значения для переменных $remove_defaults_widgets, иначе вы не сможете этими переменными воспользоваться.
Как добавить виджеты
function add_dashboard_widgets() {
global $custom_dashboard_widgets;
foreach ( $custom_dashboard_widgets as $widget_id => $options ) {
wp_add_dashboard_widget(
$widget_id,
$options['title'],
$options['callback']
);
}
}Повторим тот же процесс, что был описан выше, но применим к виджетам функцию wp_add_dashboard_widget.
Сохраняем результат и возвращаемся в Панель управления, должно получиться что-то вроде такого:

Заключение
Теперь вы можете добавлять любой виджет в свою Панель управления WordPress путем включения опций и функций обратного вызова в файле custom_widgets.php.
Хорошей мыслью будет настройка виджетов в Панели управления сайтом для заказчика. Вы также моежет вывести счетчики последний статей, комментариев, напоминания и многие другие виды информации.
Если у вас собственные мысли насчет работы с виджетами в таком ключе, не забудьте поделиться своими замечаниями и соображениями в комментариях к этому посту (в особенности если у вас есть опыт настройки Панели управления сайтом на основе виджетов для сторонних пользователей / клиентов).





















Комментарии к записи: 0