Статьи

Освоение WP_Query: финал серии

Добро пожаловать в конец серии «Мастеринг WP_Query». Это был долгий путь — это был один из самых длинных сериалов в истории Тутса. Рэйчел и я чрезвычайно гордимся тем, что являемся двумя авторами этой ссылки на WP_Query .

Мы надеемся, что вам понравилось. В этой заключительной части мы собираемся пройти через то, что мы узнали, и закрыть шторы.

Это было введение в серию Рейчел. В этой части мы узнали:

  • что такое WP_Query в простых терминах и простом примере
  • почему мы должны использовать WP_Query , и почему мы должны использовать его поверх других методов для создания пользовательских запросов
  • «предостережения» WP_Query о которых мы должны знать

Вторая часть была о создании цикла с классом WP_Query , также написанным Рэйчел. В этой части мы узнали:

  • что такое «цикл WordPress» и где он используется
  • как структурированы циклы WordPress (с хорошо написанным, подробным примером)
  • запуск дополнительных циклов с классом WP_Query

В этой части, написанной вами по-настоящему, мы рассмотрели 13 функций, которые взаимодействуют с WP_Query , что упрощает работу с ним. Функции были:

  • get_query_var() , которая получает публичные переменные запроса
  • query_posts() , который изменяет основной цикл и является плохой, очень плохой функцией
  • get_post() , который получает простой пост для работы
  • get_posts() , который получает сообщения и возвращает их в массиве
  • get_pages() , который получает страницы таким же образом
  • have_posts() , который является have_posts() , который возвращает TRUE если в запросе возвращены сообщения
  • the_post() , который превращает винтики в цикл
  • setup_postdata() , которая устанавливает глобальную переменную $post
  • rewind_posts() , который очищает текущий цикл
  • wp_reset_postdata() , которая сбрасывает глобальную переменную $post
  • wp_reset_query() , который сбрасывает весь запрос
  • is_main_query() , который проверяет, является ли текущий запрос основным (и является ли он другим is_main_query() )
  • in_the_loop() , которая проверяет, находимся ли мы в цикле (и является еще одним in_the_loop() )

Эта часть, которую я написал, была одновременно раздражающей и полезной. Это было неприятно, потому что это заняло больше времени на исследования, но это было очень полезно, потому что, ну, я многому научился. (Советы по обучению: напишите учебник по теме, о которой вы мало знаете!)

Каждый WP_Query связанный с WP_Query был (в некотором роде) о командах SQL, которые выполняют запрос — большинство из них фильтруют различные предложения, такие как LIMIT , WHERE или DISTINCT . Три действия, с другой стороны, служат различным целям:

  • Действие pre_get_posts вмешивается в запрос перед его выполнением.
  • Действие parse_query обрабатывает синтаксический анализ запроса.
  • Действие the_post изменяет объект post.

В этой части, которую я написал, мы рассмотрели свойства и методы класса WP_Query . («Свойства» и «методы» — это просто «переменные» и «функции» внутри класса PHP.) Изученные нами свойства (переменные):

  • $query
  • $query_vars
  • $queried_object
  • $queried_object_id
  • $posts
  • $post_count
  • $found_posts
  • $max_num_pages
  • $current_post
  • $post
  • 25 свойств, которые начинаются с $is_ , которые работают как условные теги

И методы (функции) были:

  • init()
  • parse_query()
  • parse_query_vars()
  • get()
  • set()
  • &get_posts()
  • next_post()
  • the_post()
  • have_posts()
  • rewind_posts()
  • &query()
  • get_queried_object()
  • get_queried_object_id()

В следующих семи частях Рэйчел проделала фантастическую работу, объясняя все аргументы, которые мы можем использовать с классом WP_Query , с небольшими примерами:

В этой части я позволил себе просмотреть различные примеры с использованием класса WP_Query и связанных с ним функций. (Я также привел быстрый пример, чтобы напомнить вам, как создать цикл с WP_Query .) Примеры были о:

  1. перечисление авторских постов в текущем году
  2. создание «Последние сообщения из этой категории», которая исключает текущее сообщение
  3. составление списка «Самые популярные сообщения», упорядоченного по количеству комментариев
  4. создание простого слайдера
  5. показ случайной цитаты на боковой панели
  6. список товаров в ценовом диапазоне
  7. создание шорткода для отображения поста внутри поста
  8. список текущих запланированных сообщений (с выдержками, если хотите)
  9. отображение раздела «Сообщение из года назад сегодня»
  10. показывая детей текущей страницы

Я должен признать, что это была самая забавная часть, над которой я работал!

Эта часть, написанная Рэйчел, рассказывает нам о комбинировании класса WP_Query с основным запросом. Это очень интригующая тема, но я должен привести здесь несколько спойлеров — в этой части Рэйчел привела три замечательных примера:

  1. Первый пример касался отображения только сообщений одного типа в архиве категорий.
  2. Второй пример был о получении постов (возвращаемых основным запросом) по типу поста и перечислении постов, разделенных по типу поста, но в одном листинге.
  3. Третий пример — разделение основного запроса на два пользовательских запроса.

Знаете ли вы, что существуют классы, которые работают как класс WP_Query чтобы помочь WP_Query ? В следующих частях Рэйчел и я говорили о:

В этой части Рэйчел рассказала об улучшениях системы запросов WordPress в версии 4.1, таких как вложенные запросы, параметры комментариев и общее исправление ошибок. Это нежная часть, легкое чтение до конца.

Как сказал Оракул в «Матричных революциях»: у всего, что имеет начало, есть конец.

Это была долгая поездка, и, как я сказал в начале, это одна из самых длинных серий в истории Tuts +. Я объединил усилия с Рэйчел МакКоллин, одним из лучших инструкторов в Tuts +, и мы оба гордимся тем, что написали самую длинную, самую всеобъемлющую и самую эпическую серию учебников по классу WP_Query и его компаньонам.

Мы очень усердно работали над сериалом, и мы очень надеемся, что вам понравилось все это. Если вы узнали что-то новое в этой серии из 19 частей, то мы рады, что проделали хорошую работу.

Если у вас есть какие-либо комментарии к этой серии, не стесняйтесь поделиться своими мыслями в разделе комментариев ниже. И, как всегда, если вам понравилась серия, не забудьте поделиться этой заключительной частью с друзьями в качестве индекса.

Ура!