Добавление пользовательских типов записей к архивам категорий и тегов.

УрокиКомментариев нет

Здравствуй pre_get_posts

Перед тем, как WordPress отобразит записи, он автоматически их берет из базы для пользователя соответственно странице, на которой записи отображаются, используя класс WP_QUERY. Например, на главной странице блога он получает из базы недавние записи блога, в архиве таксономий он получает недавние записи этой таксономии.

Для изменения этого запроса вы можете использовать фильтр pre_get_posts перед тем, когда WordPress получает из базы любые записи. Это значит, что вы можете изменять запрос к базе, используя методы класса, до того, как будет работать основной цикл WordPress. Если все это звучит устрашающе — не переживайте, следующие два раздела этой статьи дадут практические примеры того, как это работает.

Добавление пользовательских типов записей к архивам категорий и тегов.

Хороший способ изменения объекта WP_QUERY с использованием pre_get_posts заключается в добавлении записей из пользовательского типа записей в архив категорий. По умолчанию пользовательские типы записей не включаются в этот запрос. Если бы мы конструировали аргументы для передачи в WP_Query и хотели бы включить и стандартные записи, и записи пользовательского типа «jedi», тогда наш аргумент выглядел бы так:

В коллбэке для фильтра pre_get_posts мы должны передать похожий аргумент. Проблема в том, что объект WP_QUERY уже создан и мы не можем передать аргумент в него, как мы делаем, когда создаем экземпляр класса. Вместо этого будем использовать метод класса set(), который позволяет менять любые аргументы после того, как класс был создан.

Фрагмент кода ниже использует set() для изменения аргумента post_type со значения по умолчанию, которое равно post (запись — прим. перев.), на массив типов записей, включая обычные записи и наш пользовательский тип записей «jedi». Заметьте, что мы используем условный тег is_category(), чтобы изменения произошли, если отображаются именно архивы категорий.

Этот параметр функции $query — объект WP_QUERY до того, как он будет использован для заполнения отображения в главном цикле WordPress. По причине того, что страница может использовать множество циклов, как, например, при использовании виджетов, мы рекомендуем использовать условную функцию is_main_query(), чтобы убедиться, что это затронет только главный цикл и не затронет любые вторичные циклы на странице, используемые, например, виджетами.

Статьи из раздела:

  1. Как работают архивы таксономий, тегов, категорий и пользовательских типов таксономий.
  2. Создание пользовательских таксономий
  3. Использование WP_Query с пользовательскими таксономиями
  4. Делаем архивы категорий или таксономии иерархическими
  5. Создание пользовательской целевой страницы для архивов таксономий

Будь первым кто прокомментирует статью.

Добавить комментарий

Войти с помощью: