Віджети — це зручний спосіб додати блоки контенту в сайдбар або футер без редагування шаблонів. Хоча більшість тем уже мають стандартні віджети, ви можете створити власний — наприклад, для виводу останніх відгуків, курсів валют чи індивідуальної статистики. У цій статті покажемо, як створити кастомний віджет у WordPress.
1. Де зберігати код?
Рекомендовано створити плагін або додати код до functions.php
теми. Ми покажемо приклад у функціях теми.
2. Реєстрація кастомного віджета
Додайте наступний код у functions.php
:
class My_Custom_Widget extends WP_Widget {
function __construct() {
parent::__construct(
'my_custom_widget',
'Мій Віджет',
array('description' => 'Виводить кастомні дані')
);
}
function widget($args, $instance) {
echo $args['before_widget'];
echo $args['before_title'] . 'Динамічні дані' . $args['after_title'];
// Ваш код — приклад виводу останніх постів
$query = new WP_Query(array('posts_per_page' => 3));
echo '<ul>';
while ($query->have_posts()) : $query->the_post();
echo '<li><a href="' . get_permalink() . '">' . get_the_title() . '</a></li>';
endwhile;
echo '</ul>';
wp_reset_postdata();
echo $args['after_widget'];
}
function form($instance) {
echo '<p>Налаштувань поки немає.</p>';
}
function update($new_instance, $old_instance) {
return $old_instance;
}
}
function register_my_custom_widget() {
register_widget('My_Custom_Widget');
}
add_action('widgets_init', 'register_my_custom_widget');
3. Де з’явиться віджет?
Після додавання коду перейдіть до Зовнішній вигляд → Віджети або Customizer, і ви побачите «Мій Віджет» серед доступних блоків.
4. Додавання налаштувань у віджет
Ось приклад поля для введення заголовка віджета:
function form($instance) {
$title = $instance['title'] ?? '';
echo '<p>
<label>Заголовок:</label>
<input type="text" name="' . $this->get_field_name('title') . '" value="' . esc_attr($title) . '" />
</p>';
}
function update($new_instance, $old_instance) {
$instance = [];
$instance['title'] = sanitize_text_field($new_instance['title']);
return $instance;
}
function widget($args, $instance) {
$title = $instance['title'] ?? 'Мій віджет';
echo $args['before_widget'];
echo $args['before_title'] . esc_html($title) . $args['after_title'];
// ...
}
5. Що ще можна виводити?
- Динамічну інформацію з API (наприклад, погоду або курси валют)
- Дані з бази WordPress: відгуки, користувачі, товари
- Форми, CTA-кнопки, шорткоди
6. Сумісність із Gutenberg
Віджети працюють у класичному режимі. Для повної підтримки блок-редактора створюйте Gutenberg блоки, але класичні віджети досі актуальні для багатьох тем.
Висновок
Кастомні віджети — це потужний інструмент для гнучкого управління контентом у WordPress. Створити їх не складно, а можливості — практично безмежні: від простого списку постів до інтеграції зі сторонніми сервісами.