Изучаем WP_Query: Свойства и методы

Вы читаете очередную статью из серии, посвященной изучению WP_Query. Сегодня мы познакомим вас со свойствами и методами этого класса.

Что такое свойства и методы?

В PHP существует метод написания более структурированного кода, который называют объектно-ориентированным программированием или ООП.

В ООП классы можно сопоставить с чертежом для строительства дома. В нем указана форма дома, описывается соотношение различных компонентов дома друг с другом, хотя сам дом еще даже не начали строить.

Также важно помнить, что WP_Query и сам является важнейшим классом ядра WordPress.

Когда вы уясните понятие PHP-классов, будет несложно научиться понимать и использовать «свойства» и «методы», потому что они являются синонимами «переменных» и «функций». Свойства являются «переменными» класса PHP, а методы – его «функциями».

Теперь давайте перейдем к изучению самих свойств и методов. Сразу хочу предупредить: изменять свойства напрямую будет не очень правильно. В кодексе говорится, что нужно взаимодействовать с ними через методы WP_Query.

Свойства класса WP_Query

Строка запроса: $query

Свойство хранит запрос, переданный объекту $wp_query.

Массив переменных запроса: $query_vars

Свойство хранит ассоциативный массив переменных (и их значений) запроса $query.

Опрашиваемый объект: $queried_object

Это свойство хранит текущий опрашиваемый объект типа $post, если это запрос к записи. Или объект $author, если запрос относится к автору записи.

ID опрашиваемого объекта: $queried_object_id

Свойство хранит ID опрашиваемого объекта.

Записи, полученные в ответ на запрос: $posts

Свойство хранит записи, полученные в ответ на запрос.

Количество записей для отображения: $post_count

Свойство хранит количество записей для текущего запроса.

Количество записей, полученных по запросу: $found_posts

Свойство хранит количество записей без учета условия SQL-запроса LIMIT.

Количество страниц: $max_num_pages

Свойство хранит количество страниц, которое получается путем деления $found_posts на $posts_per_page.

Индекс текущей записи: $current_post

Свойство хранит индексное значение текущего объекта в цикле. Например, значением будет -1, если цикл только что начался, и будет повышаться с помощью метода next_post().

Текущая запись: $post

Это свойство хранит текущую запись.

Логические выражения условного тега: $is_{conditional}

Следующие свойства хранятся в виде логических выражений, предоставляя информацию о статусе текущей записи:

  • $is_single: проверяет, относится ли данный пост к стандартному типу записи (кроме типов записей “вложение” и “страница”) или нет;
  • $is_page: проверяет, является ли данный элемент пагинации страницей или нет;
  • $is_archive: проверяет, является ли страница архивом;
  • $is_preview: проверяет, является ли запись предварительным просмотром оригинальной записи;
  • $is_date: проверяет, относится ли запись к архивам по дате или нет;
  • $is_year: проверяет, относится ли запись к архивам по году или нет;
  • $is_month: проверяет, относится ли запись к архивам по месяцу или нет;
  • $is_time: проверяет, относится ли запись к архивам по времени (часы, минуты или секунды) или нет;
  • $is_author: проверяет, является ли страница архивом автора или нет;
  • $is_category: проверяет, является ли страница архивом категории или нет;
  • $is_tag: проверяет, является ли страница архивом тега или нет;
  • $is_tax: проверяет, является ли страница архивом по таксономии или нет;
  • $is_search: проверяет, является ли страница результатом поиска или нет;
  • $is_feed: проверяет, относится ли страница к ленте новостей (feed) или нет;
  • $is_comment_feed: проверяет, относится ли страница к ленте новостей для комментариев (feed) или нет;
  • $is_trackback: проверяет, является ли страница трекбэком или нет;
  • $is_home: проверяет, является ли страница основной страницей блога или нет;
  • $is_404: проверяет, является ли страницей ошибки 404 или нет;
  • $is_comments_popup: проверяет, является ли страница всплывающим окном комментариев или нет;
  • $is_admin: проверяет, является ли страница панелью администратора или нет;
  • $is_attachment: проверяет, является ли элемент страницей вложения или нет;
  • $is_singular: проверяет, является ли пост единственной страницей этого типа (включая типы записей “вложение” и “страница”) или нет;
  • $is_robots: проверяет, является ли страница запросом к файлу robots.txt или нет;
  • $is_posts_page: проверяет, является ли страница страницей для записей (устанавливается настройками чтения в панели администрирования WordPress) или нет;
  • $is_paged: проверяет, является ли это запросом с постраничным выводом, и находимся ли мы на первой странице или нет.

Методы класса 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 )

Метод устанавливает указанную переменную запроса в конкретное значение.

&get_posts()

Метод возвращает запрошенные записи, и заполняет свойства $posts и $post_count.

next_post()

Этот метод повышает индекс $current_post и переходит к следующей записи в $posts, возвращая объект текущей записи. Для правильной работы метод нужно использовать внутри цикла.

the_post()

Метод заполняет глобальную переменную the_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()

Этот метод похож на приведенный выше, возвращает ID запрошенного объекта ($queried_object_id).

Совет: если перед методом используется знак &, значит, метод возвращается ссылкой.

В завершение

Надеюсь, мне удалось объяснить вам, что такое свойства и методы класса. Если вы поняли их предназначение для класса WP_Query, значит, моя цель достигнута.

Поделитесь своими мыслями в комментариях. И если вам понравилась наша сегодняшняя статья, не забудьте поделиться ею с друзьями!

Увидимся в следующих частях этой серии!

Перевод статьи “Mastering WP_Query: Properties and Methods” был подготовлен дружной командой проекта Сайтостроение от А до Я.