SebWeo
Продолжаем серию уроков по работе с запросами в базу данных 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 для получения нужных публикаций и/или страниц (включая их тип).
WordPress годами был непревзойденным "монолитом": он отвечал и за удобную админ-панель, и за хранение данных,…
В мире веб-серверов часто говорят о противостоянии Nginx vs Apache. Но что, если бы я…
Когда я начинал свой путь в веб-разработке, вопрос "какой веб-сервер использовать?" практически не стоял. Ответ…
Когда речь заходит о веб-серверах, два имени всегда на слуху: Apache и Nginx. Apache —…
В мире веб-разработки мы постоянно сталкиваемся с проблемой: "А у меня на компьютере все работает!".…
На заре моей карьеры веб-разработчика все было относительно просто: установил локальный сервер (помните Denwer?), положил…