Виджет архивов: класс WP_Widget_Archives в WordPress

Виджет Архивов в 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();
// используйте методы класса

Методы

Класс имеет следующие методы:

  1. public __construct(): Конструктор, который создает новый экземпляр виджета.
  2. public form( $instance ): Отображает настройки виджета в административной панели.
  3. public update( $new_instance, $old_instance ): Обновляет настройки виджета.
  4. 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.

Теперь вы сможете легко добавлять и настраивать виджет архивов на вашем сайте, используя описанные методы и примеры.

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *