
Использование запросов WP_Query в WordPress – часть 5 (методы и свойства)
Продолжаем серию уроков по работе с запросами в базу данных WP_Query в ВордПресс. Сегодняшний урок посвящен методам и свойствам, связанным с классом WP_Query
.
До этого мы уже познакомились со специальными функциями, дополнительными хуками и фильтрами. А теперь перейдем к рассмотрению следующей ступени – свойства и методы класса, и начнем с основ.
Что такое методы и свойства — обобщенное определение
В языке программирования PHP есть отличный способ организации кода — ООП (объектно-ориентированное программирование), когда мы используем классы, которые по своей сути можно сравнить с проектом (генеральным чертежом) дома. Классы определяют основные параметры объекта (в нашем примере дома), которые должны четко взаимодействовать между собой, скоординировать все связи между разными частями дома, даже если его сейчас и не существует. А методы – это функции, определяющие взаимодействие с домом, а свойства – это его «сменные» компоненты (переменные). Поэтому, возвращаясь к языку программирования PHP, мы можем определить свойства как переменные класса, а методы определить в качестве функций класса. А поскольку движок CMS WordPress построен на PHP, потому и использует его ООП подход. Следовательно, и здесь есть свойства и методы, к обзору которых мы сейчас и перейдем.
Основные свойства класса WP_Query
в ВордПресс
Теперь от общего PHP перейдем к PHP, используемому в системе управления контентом ВордПресс, в частности к свойствам (другими словами, переменным) класса WP_Query
.
Значение запроса: $query
В этом свойстве сохраняется строка запроса, передаваемая объекту $wp_query
.
Массив переменных запроса: $query_vars
Это свойство сохраняет ассоциативный массив переменных $query
(и их значения).
Объект в запросе: $queried_object
Это свойство сохраняет текущий объект запроса, например объект $post
, если это запрос публикации, или $author
, если это запрос автора.
Идентификатор объекта в запросе: $queried_object_id
Это свойство сохраняет идентификатор текущего объекта в запросе.
Публикации, полученные в результате запроса: $posts
Это свойство сохраняет публикации, которые вернул текущий запрос.
Количество отображаемых публикаций: $post_count
Это свойство сохраняет количество публикаций для текущего запроса.
Количество возвращенных публикаций: $found_posts
В данном свойстве сохраняется значение количества полученных по запросу публикаций.
Количество страниц публикаций: $max_num_pages
Это свойство сохраняет общее количество полученных страниц — оно вычисляется путем деления $found_posts
на $posts_per_page
.
Индекс текущей публикации: $current_post
Это свойство сохраняет номер индекса текущего элемента в цикле. Например, -1
указывает, что цикл находится в самом начале. Данный индекс в дальнейшем увеличивается с помощью метода next_post()
.
Текущая публикация: $post
Это свойство содержит данные текущей публикации.
Основные логические значения условного тега: $is_{условие}
Давайте рассмотрим основные и наиболее часто используемые свойства, которые при указании в условном теге предоставляют нам информацию о текущем статусе публикации:
$is_home
: проверяет, является ли данная страница главной страницей блога (определенной в настройках как главная страница публикаций)$is_admin
: проверяет, находится ли текущий пользователь в административной панели (Консоль, админка) или нет$is_single
: проверяет, является ли данная публикация отдельной или нет (но без учета постов типа «вложения» и «страница»). А для всех типов постов используйте условный тэг$is_singular
$is_page
: проверяет, что тип данного поста есть страница (page
) или нет$is_archive
: проверяет, является ли данная страница страницей с типом «архив» или нет$is_date
: условие проверяет, является ли данная страница с типом архива на основе даты. Дополнительно: условные тэги$is_year
— для проверки архивов по годам,$is_month
— для проверки архивов по месяцам,$is_time
— для проверки архивов на основе времени (почасово, поминутно или посекундно).$is_author
: проверяет, является ли данная страница архивной страницей публикаций определенного автора или нет$is_category
: проверяет, является ли данная страница архивной страницей публикаций на основные категории или нет$is_tag
: проверяет, является ли данная страница архивной страницей публикаций на основные тегов или нет$is_tax
: проверяет, является ли данная страница архивной страницей публикаций на основе таксономии или нет. Дефолтные таксономии в ВордПрессе: рубрики, метки, меню, форматы постов$is_search
: проверяет, является ли текущая страница страницей «результатов поиска»
Основные методы класса WP_Query
в ВордПресс
Теперь от свойств класса WP_Query
давайте перейдем к его методам (другими словами, функциям).
Метод init()
Этот метод просто инициализирует объект, устанавливая для всех свойств дефолтные значения NULL
, 0
или FALSE
.
Метод parse_query( $query )
Этот метод использует свойство $query
, чтобы проанализировать запрос и на основе этого заполнить все другие свойства (кроме $posts
, $post_count
, $post
и $current_post
).
Метод parse_query_vars()
Этот метод повторно анализирует переменные запроса.
Метод get( $query_var )
Этот метод получает заданную переменную запроса.
Метод set( $query_var, $value )
Этот метод устанавливает значение указанной переменной запроса ($query_var
) на определенное значение ($value
).
Метод &get_posts()
Этот метод возвращает публикации, инициированные запросом, и заполняет значения свойств $posts
и $post_count
.
Метод next_post()
Этот метод увеличивает индекс $current_post
и переходит к следующей публикации в $posts
, возвращая текущий объект публикации (обязательно внутри цикла).
Метод the_post()
Этот метод устанавливает глобальную переменную $post
, включая данные следующей публикации (обязательно внутри цикла).
Метод have_posts()
Этот метод проверяет, остались ли публикации в цикле обработки, и возвращает FALSE
, если их нет (обязательно перед циклом).
Метод rewind_posts()
Этот метод просто производит сброс свойств $current_post
и $post
.
Метод &query( $query )
Этот метод вызывает два связанных метода parse_query()
и get_posts()
, и возвращает результат метода get_posts()
.
Метод get_queried_object()
Этот метод возвращает находящийся в запросе объект. Дополнительно метод устанавливает $queried_object
, если он еще не был установлен.
Метод get_queried_object_id()
Этот метод просто возвращает идентификатор текущего запрашиваемого объекта (свойство $queried_object_id
).
ПРИМЕЧАНИЕ: если вы видите перед методом амперсанд (&), не пугайтесь — это просто означает, что метод возвращает свойство не напрямую, а по ссылке. То есть, мы работаем не с копией свойства, а ссылкой на нее, которое было обработано методом.
На сегодняшний день все. В данном уроке мы рассмотрели важные понятия «свойства» (переменные) и «методы» (функции) в классе WP_Query
, который мы используем для запроса контента из базы данных. Встретимся в следующей части серии, в которой мы перейдем к закреплению теоретической части серии на практике. Будем практиковать создание кастомных запросов с WP_Query
для получения нужных публикаций и/или страниц (включая их тип).