Статьи

Освоение WP_Query: свойства и методы

Добро пожаловать в еще одну часть нашей серии «Mastering WP_Query». Как у нас дела? Я надеюсь, что вам нравятся эти уроки так же, как мы наслаждаемся их написанием.

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

А не ___ ли нам?

В PHP есть способ написать код более понятным способом: объектно-ориентированное программирование или ООП. В ООП мы используем «классы» в качестве чертежей — я взял термин из одной из классических публикаций Code Tuts + « Объектно-ориентированный PHP для начинающих » Джейсона Ленгсторфа:

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

(И помните, что WP_Query — это необходимый класс ядра WordPress.)

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

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

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

Давайте начнем со свойств или переменных класса WP_Query .

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

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

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

В этом свойстве хранится идентификатор запрашиваемого объекта.

В этом свойстве хранятся сообщения, возвращаемые по запросу.

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

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

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

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

Это свойство хранит, ну, текущее сообщение.

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

  • $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 : проверяет, является ли это фидом или нет.
  • $is_comment_feed : проверяет, является ли это комментарием или нет.
  • $is_trackback : проверяет, является ли это трекбэком или нет.
  • $is_home : проверяет, является ли это главной страницей блога или нет.
  • $is_404 : проверяет, является ли страница 404 ошибкой или нет.
  • $is_comments_popup : проверяет, всплывающее окно с комментариями или нет.
  • $is_admin : проверяет, является ли это административной панелью или нет.
  • $is_attachment : проверяет, является ли это вложение или нет.
  • $is_singular : проверяет, является ли это одно сообщение любого типа (включая типы сообщений «вложение» и «страница») или нет.
  • $is_robots : проверяет, является ли это запрос robots.txt или нет.
  • $is_posts_page : проверяет, является ли это «страницей сообщений» (установленной на странице «Настройки чтения» в панели администратора) или нет.
  • $is_paged : проверяет, является ли запрос $is_paged на страницы и не является ли он первой страницей.

Теперь, когда мы закончили со свойствами, давайте перейдем к методам (функциям) класса WP_Query .

Этот метод просто инициализирует объект, устанавливая все свойства в NULL , 0 или FALSE .

Этот метод использует свойство $query для анализа запроса и заполнения всех других свойств (кроме $posts , $post_count , $post и $current_post ).

Этот метод разбирает переменные запроса.

Этот метод выбирает данную переменную запроса.

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

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

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

Этот метод устанавливает глобальную переменную $post с данными следующего сообщения. (Этот метод должен использоваться внутри цикла для правильной работы.)

Этот метод проверяет, остались ли еще сообщения для работы, и возвращает FALSE если их нет. (Этот метод должен использоваться перед тем, как цикл будет работать должным образом.)

Этот метод просто сбрасывает свойства $current_post и $post .

Этот метод вызывает два из своих одноуровневых методов, parse_query() и get_posts() , и возвращает результат get_posts() .

Этот метод возвращает запрашиваемый объект. (Он устанавливает $queried_object если он еще не установлен.)

Этот метод, аналогичный приведенному выше, возвращает идентификатор запрашиваемого объекта ( $queried_object_id ).

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

Я надеюсь, что мне удалось прояснить для вас, что «свойства» и «методы» означают для классов. И если вы поняли назначение свойств и методов класса WP_Query , я могу сказать, что я проделал достойную работу!

У вас есть что добавить в эту статью? Поделитесь своими мыслями с нами в разделе комментариев ниже. И если вам понравилась статья, не забудьте поделиться ею с друзьями.

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