Панель керування 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. Він міститиме визначення наших віджетів (щоб видалити стандартні віджети та додати наші власні).
Спочатку виберемо, які віджети ми хочемо видалити. По суті, це - будь-який масив з ідентифікаторами віджетів, що видаляються + інформація про те, де їх видалити (сторінка и контекст).
Для цього скористаємося функцією remove_meta_box(), оскільки віджети в панелі управління працюють як мета-бокси. Ця функція має 3 аргументи:
- ID
- сторінка - де ми можемо знайти цей віджет (консоль / пост / вкладення / ...)
- Контекст — у якій області розташований віджет (у звичайній / розширеній / бічній частині сайту)
А тепер додамо дані параметри:
$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
- назва - Заголовок віджету.
- 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