Виджет Архивов в WordPress
WP_WIDGET_ARCHIVES — это основной класс, который используется для реализации виджета архивов в WordPress. Этот виджет позволяет отображать архивы ваших записей на сайте.
Хуки классов
Из класса WP_Widget_Archives доступны следующие хуки:
- widget_title: Позволяет изменять заголовок виджета.
- widget_archives_dropdown_args: Позволяет изменять параметры выпадающего списка архивов.
- navigation_widgets_format: Устанавливает формат навигации для виджетов.
- widget_archives_args: Позволяет изменять параметры архивов.
Использование
Чтобы использовать виджет архивов, создайте его экземпляр:
$WP_Widget_Archives = new WP_Widget_Archives();
// используйте методы класса
Методы
Класс имеет следующие методы:
public __construct(): Конструктор, который создает новый экземпляр виджета.public form( $instance ): Отображает настройки виджета в административной панели.public update( $new_instance, $old_instance ): Обновляет настройки виджета.public widget( $args, $instance ): Выводит содержимое виджета на сайте.
Примеры использования виджета архивов
Пример 1: Архивы продуктов WooCommerce
Если стандартный виджет "Архивы" вам не нужен (обычно он отображает архивы записей), вы можете использовать хуки, чтобы вместо этого отобразить архивы продуктов WooCommerce. Это выглядит так:
add_filter('widget_archives_dropdown_args', 'wc_widget_archives_args'); // Для выпадающего списка
add_filter('widget_archives_args', 'wc_widget_archives_args'); // Для списка с буллетами
function wc_widget_archives_args( $args ) {
$args['post_type'] = 'product'; // показываем архивы продуктов
return $args;
}
Пример 2: Архивы по дням
Если на вашем сайте часто публикуются записи, вы можете показать архивы по дням и ограничить количество выводимых дней:
add_filter('widget_archives_dropdown_args', 'widget_archives_days');
function wc_add_widget_archives_dropdown_args( $args ) {
$args['type'] = 'daily'; // показываем архивы по дням
$args['limit'] = 5; // ограничение по количеству дней
return $args;
}
Пример 3: Создание улучшенного виджета архивов
Вы можете создать свой усовершенствованный виджет архивов на основе стандартного. В этом виджете добавим выбор типа архива и количество ссылок, которые нужно отображать:
add_action('widgets_init', 'register_widget_archives_advanced');
function register_widget_archives_advanced() {
class WP_Widget_Archives_Advanced extends WP_Widget_Archives {
public $default = ['type' => 'monthly', 'limit' => '', 'post_type' => 'post'];
public function __construct() {
$widget_ops = ['description' => 'Улучшенный виджет с архивами'];
parent::__construct('archives_advanced', 'Улучшенные архивы', $widget_ops);
}
public function form($instance) {
parent::form($instance);
$instance = wp_parse_args((array)$instance, $this->default);
$options = [
'monthly' => 'По месяцу',
'yearly' => 'По году',
'daily' => 'По дням',
'weekly' => 'По неделям',
'postbypost' => 'По записям (по дате)',
'alpha' => 'По записям (по названию)',
];
?>
Оставьте поле пустым, чтобы отобразить все ссылки
default);
$instance = parent::update($new_instance, $old_instance);
$instance['type'] = sanitize_key($new_instance['type']);
$instance['limit'] = $new_instance['limit'] > 0 ? (int)$new_instance['limit'] : '';
$instance['post_type'] = sanitize_key($new_instance['post_type']);
return $instance;
}
public function widget($args, $instance) {
add_filter('widget_archives_dropdown_args', [$this, 'add_args'], 10, 2);
add_filter('widget_archives_args', [$this, 'add_args'], 10, 2);
parent::widget($args, $instance);
remove_filter('widget_archives_dropdown_args', [$this, 'add_args']);
remove_filter('widget_archives_args', [$this, 'add_args']);
}
public function add_args($args, $instance) {
return wp_parse_args($instance, $args);
}
}
register_widget('WP_Widget_Archives_Advanced');
}
Заметки
- Класс
WP_Widgetслужит основой для всех виджетов в WordPress, включая виджет архивов. Вы можете адаптировать и расширять стандартные виджеты по своему желанию. - Не забудьте ознакомиться с документацией WordPress для получения информации о других хуках и функциях.
Изменения в версиях
С версии 2.8.0 данный класс был введен в WordPress.
Теперь вы сможете легко добавлять и настраивать виджет архивов на вашем сайте, используя описанные методы и примеры.