✅ Новости WEB и WordPress, темы, плагины. Здесь мы делимся советами и лучшими решениями для веб-сайтов.

Учебное пособие по темам WordPress для начинающих. Часть 12. Пользовательский почтовый запрос

20

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

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

Шаблон похожих сообщений

Давайте сделаем связанные посты частью шаблона, о которой мы узнали в части 10. Таким образом, мы не усложняем single.phpи делаем наш код более пригодным для повторного использования. Разместите запрос на эту новую часть шаблона, где хотите. Размещу прямо перед запросом шаблона комментариев:

Теперь давайте создадим новый пустой файл в папке нашей темы и назовем его related-posts.php. С этим файлом мы готовы погрузиться в создание пользовательского почтового запроса.

Пользовательский почтовый запрос

Если вы хотите сделать собственный запрос сообщений, у вас есть несколько вариантов, но я рекомендую привыкнуть к классу WP_Query. Добавьте эту страницу документации в закладки, так как вы будете часто обращаться к ней, потому что существует так много вариантов. Я покажу вам практический пример настройки запроса, обратившись к документации по каждой спецификации, которую мы хотим добавить.

Если вы хотите узнать больше о том, как запрашивать сообщения, у меня есть сообщение, в котором подробно рассказывается об этом.

Чтобы сделать собственный почтовый запрос, мы вызовем new WP_Query(), передадим ему массив аргументов и сохраним его результат в переменной. И затем мы будем использовать точно такой же цикл, который мы использовали ранее в наших шаблонах (взгляните на исходный цикл здесь, чтобы сравнить). Но нам нужно сообщить циклу, чтобы он проходил через переменную, а не через глобальную (которая представляет собой одиночный пост).

Вот как будет выглядеть цикл при добавлении его в пользовательский запрос:

Как видите, цикл точно такой же, только с использованием have_postsи the_post. Разница в том, что мы вызываем их на $related_postsобъект. Если мы пропустим эту $related_postsчасть, WordPress автоматически предполагает, что это глобальный запрос сообщений.

Вы также можете заметить вызов функции wp_reset_postdata()сразу после цикла. Вот как мы «убираем за собой» после пользовательского запроса с помощью WP_Query. Помните, что это the_post()устанавливает глобальный объект записи, чтобы мы могли использовать the_title()и т. д. И поскольку мы уже находимся внутри цикла (тот, что в single.php), нам нужно убедиться, мы очищаем и сбрасываем публикацию обратно в одиночную публикацию после того, как мы закончили. Если мы не сбрасываем почтовые данные, все после этого будет ссылаться на последнюю связанную публикацию, которую мы просмотрели. Это может быть большой проблемой! В нашем примере мы иметь шаблон комментариев, который следует за этим. Если не выполнять сброс, в шаблоне комментариев будут отображаться комментарии из последнего связанного сообщения в цикле. А не единственное сообщение, которое мы на самом деле просматриваем!

Реализация нашего пользовательского цикла

Хорошо, давайте начнем реализовывать пользовательский цикл в нашем файле related-posts.php. Я добавил обертку и заголовок, но, как обычно, вы можете настроить HTML по своему усмотрению:

Теперь мы увидим возможности повторного использования в частях шаблона. Допустим, внутри этого пользовательского цикла мы хотим показать точно такой же контент, как и в нашем файле content-loop.php, который мы используем в наших шаблонах архивов. Все, что нам нужно сделать, это запросить эту часть шаблона внутри нашего пользовательского цикла, если мы все настроены на обработку вывода каждого сообщения!

Теперь осталось только добавить аргументы в наш почтовый запрос, чтобы убедиться, что мы получаем то, что хотим. Давайте рассмотрим аргументы один за другим.

Создание аргументов для нашего пользовательского почтового запроса

Мы хотим получить не более 3 сообщений. В документации (раздел «Параметры пагинации») аргумент для этого — posts_per_page. Итак, мы добавляем элемент массива:

Мы хотим убедиться, что WordPress получает посты, а не страницы или что-то еще. В «Параметры типа записи» находим:

Мы хотим, чтобы единственная запись, на которой мы находимся, не появлялась в нашем запросе связанных записей, потому что это не имеет смысла, верно? Документация сообщает нам в «Параметры публикации и страницы», что мы можем добавить идентификатор публикации в массив для post__not_in:

Мы также хотим рандомизировать сообщения; потому что по умолчанию он будет получать последние опубликованные сообщения, и это может быстро стать довольно повторяющимся, когда вы просматриваете сообщения. К счастью, в WordPress есть функция для этого в том, как он упорядочивает сообщения; в «Порядке и порядке по параметрам» находим:

Наконец, мы хотим запрашивать сообщения, которые находятся в тех же категориях, что и сообщение, в котором мы находимся. Для этого нам нужно сначала, до аргументов запроса, получить категории для единственного поста, в котором мы находимся. В «Параметры категории» мы видим, что можем предоставить массив идентификаторов категорий для category__in. К счастью, в WordPress есть функция для получения идентификаторов категорий для сообщений; wp_get_post_categories()который мы можем использовать прямо как значение параметра. Идеальный!

Вот окончательный запрос и его аргументы:

Обновите, и вы должны увидеть 3 сообщения, перечисленные в нижней части одиночного представления. Обновите несколько раз, чтобы увидеть, что они меняются, потому что мы сказали WordPress рандомизировать их. Примечание. Если у вас менее 3 сообщений в одной категории, вы получите меньше 3 сообщений.

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

Источник записи: awhitepixel.com

Этот веб-сайт использует файлы cookie для улучшения вашего опыта. Мы предполагаем, что вы согласны с этим, но вы можете отказаться, если хотите. Принимаю Подробнее