- Получение и вывод записей/постов WordPress — WP_Query и get_posts()
- Отладка
- Изменение базового запроса
- Параметры GET запроса
- Использование WP_Query для получения записей
- Методы получения записей
- Фильтры записей
- Основные фильтры и параметры запроса
- Фильтр по дереву (иерархии)
- Фильтр по категориям
- Фильтр по тегам (меткам)
- meta_query — фильтр по мета данным
- tax_query — фильтр по таксономиям
- Примеры запросов
- Вывод записей
- Цикл вывода записей
- Дополнительные/мета поля
- post_meta
- WP_Query: query_vars
- setup_postdata($post)
- Как вывести посты по рубрикам на отдельной странице в WordPress
- Создание шаблона страницы
- Задача 1. Вывести рубрики или отдельную рубрику на странице в WordPress.
- Задача 2. Как вывести записи из рубрик на страницу в WordPress.
- Используем плагины
- Разнообразные возможности вывода записей на страницах WordPress
- Самый элементарный способ
- Как выглядит код?
- Как определить ID категории?
- ТОП-7 лучших плагинов ВордПресс для вывода рубрик
- Get Posts. Особенности настройки
- Подробнее об аргументах
- Как настроить публикацию с применением опции Get Posts?
- 3 варианта размещения get posts
- Немного CSS не помешает
- Выводы
Получение и вывод записей/постов WordPress — WP_Query и get_posts()
Параметры запроса постов и таксономий WordPress. Примеры фильтров и способов рендеринга постов, категорий и кастомных таксономий.
Для каждой страницы ядро WordPress формирует запрос к БД для получения записей на основе параметров GET запроса. Параметры запроса постов устанавливаются в глобальном объекте $wp_query . При необходимости, вы можете модифицировать этот базовый запрос иди же сформировать новый объект запроса к БД — WP_Query .
Внимание!
Не вызывайте ф-цию get_posts() и не используйте класс WP_Query непосредственно в файле functions.php! Получите мучительно долгую отладку неработающего запроса. Используйте запросы WP_Query внутри хуков или в самих шаблонах.
Внимание!
Никогда не используйте функцию query_posts() ! Эта ф-ция используется ядром WP для формирования основного запроса на получение постов по GET параметрам URL/ЧПУ. Вызвав эту ф-цию, вы замените глобальный объект основного запроса — $wp_query . Для дополнительных кастомных запросов всегда используйте WP_Query или обертку get_posts() .
Если вы все же изменили глобальную переменную $wp_query (что не рекомендуется!) с помощью функции query_posts() , верните ее в исходное состояние с помощью wp_reset_query() . И убедитесь, что вы делаете все правильно..
Отладка
SQL запрос объекта WP_Query хранится в свойстве request:
Изменение базового запроса
Задать параметры основного/базового запроса глобальный объект запроса вы можете только через хук pre_get_posts :
Параметры GET запроса
Использование WP_Query для получения записей
Сразу приведу пример полного цикла вывода записей/постов:
Примечание
Ф-ция wp_reset_postdata() восстанавливает глобальную переменную $post из глобального объекта $wp_query:
Далее подробно рассмотрим детали каждого этапа и дополнительных возможностей.
Методы получения записей
Получение одной записи/поста по id или slug:
Примечание
Функция get_post() — это обертка над WP_Post , она принимает дополнительные параметры $output и $filter:
Сформировать новый запрос для получения записей/постов WP_Query :
Получение записей/постов используя функцию get_posts() :
Примечание
Функция get_posts() — это просто обертка над WP_Query . Принимает массив с теми же параметрами для фильтрации постов. В отличие от query_posts() , она не вмешивается в глобальный запрос $wp_query , а создает отдельный экземпляр класса WP_Query . Также ф-ция get_posts() устанавливает некоторые дефолтные значения:
Фильтры записей
Основные фильтры и параметры запроса
Примечание
paged — Номер страницы пагинации. Показывает посты, которые в обычном режиме должны были быть показаны на странице пагинации Х. Переписывает параметр posts_per_page.
page(число) — Номер для статической домашней страницы. Показывает записи, которые в обычном режиме должны были быть показаны на странице пагинации Х главной статической странице (front page).
Примечание
Примечание к типам постов:
Фильтр по дереву (иерархии)
Фильтр по категориям
Примечание
При использовании фильтра post_in , WordPress будет извлекать «прикрепленные» записи, даже если их ID нет в массиве! Чтобы отключить вывод «прилепленных» записей — передайте параметр ignore_sticky_posts .
Фильтр по тегам (меткам)
meta_query — фильтр по мета данным
Параметр meta_query представляет массив вложенных параметров фильтрации записей/постов по мета данным.
tax_query — фильтр по таксономиям
Фильтр по категории кастомных постов:
Фильтр по категории и тегам:
Примеры запросов
Получить дочерние страницы для текущей страницы:
Всего доступно постов:
Добавить фильтр запроса «посты только с изображениями»:
Вывод записей
Цикл вывода записей
Примечание
Используйте wp_reset_postdata() для «сброса» значения глобальной переменной $post к состоянию основного запроса, после завершения любых циклов обхода записей! Поскольку каждый the_post() заменяет глобальные переменные, вы можете обнаружить, что на странице записи, например, переменная $post содержит не основной пост, а какой-то другой. Который скорее всего будет последним постом из какого-то цикла.
Дополнительные/мета поля
post_meta
Получить мета поля:
Получить ссылку на основное изображение поста:
WP_Query: query_vars
Получить объект (пост или таксономия) запроса для текущего маршрута/ЧПУ:
Получить параметры запроса для текущей страницы:
Получить параметр запроса WP_Query текущей страницы (поста или записей раздела):
Получить объект параметров основного GET запроса текущей страницы. Параметры формируются в зависимости от страницы — это может быть набор параметров для получения поста на странице поста, или параметры получения списка постов на страницах категории/архива.
Пример получения название категории для архива:
setup_postdata($post)
Извлекает данные поста и формирует глобальные переменные поста. Использует переданную переменную $post и глобальный объект запроса $wp_query. Создаются следующие глобальные переменные: $id, $authordata, $currentday, $currentmonth, $page, $pages, $multipage, $more, $numpages.
Функция работает только при условии, что вы передаете ей глобальный объект поста с именем $post. Если у вас объект поста находится в другой переменной — установите $post = $myWpPost, после чего передайте $post в эту ф-цию. Я не очень понимаю как работает эта ф-ция, если передавать ей ID поста вместо $post.
$found_posts — количество найденных записей
$query_vars — аргументы запроса
Получение отдельных полей поста (post_type, post_title, post_status, post_content..):
Источник
Как вывести посты по рубрикам на отдельной странице в WordPress
Продолжаем рассматривать вопросы кастомизации рубрик. В этой статье мы научимся работать не только с выводом данных самих категорий, но и записей которые к ним привязаны.
Суть задачи – это вывести названия рубрик или отдельной рубрики на странице WordPress. Возникает вполне логичный вопрос для чего это нужно, ведь есть шаблон категории? Все правильно, но с точки зрения seo оптимизации шаблон категории не очень подходит для продвижения рубрик, его можно допилить с помощью произвольных полей, но можно использовать альтернативный подход – это вывод записей категории на странице WordPress.
Чем рубрика отличается от страницы? В первую очередь – это наличие возможности задать seo теги, такие как title и description даже при подключении бесплатных версий seo плагинов. Во-вторых – это возможность добавить описание с форматированием текста, привязать картинку. Все это также можно сделать на странице категории, но в данной статье мы рассмотрим пример использования шаблона страниц для этих целей.
Создание шаблона страницы
Для начала вам нужно создать шаблон страницы, который мы будем использовать для вывода наших рубрик.
Для этого нужно зайти в папку с вашей темой по адресу: wp-content/themes/your_theme/. Для этого можно воспользоваться либо ftp клиентом, либо же панелью хостинга. Если вы новичок лучше перед началом работ сделайте бэкап сайта.
1. В корневой папке темы создаем файл, например category-page.php.
2. В ней же находим файл page.php и копируем его содержимое в файл category-page.php. Я использую дефолтную тему twentynineteen, и буду показывать на ее примере, вам же нужно учитывать html разметку вашего шаблона и копировать ваш код из файла page.php, внося изменения которые я покажу ниже.
3. Делаем из файла category-page.php шаблон страницы с помощью следующего кода.
4. Сохраняем. Идем в админку сайта в раздел «Страницы» — «Добавить новую». Указываем заголовок страницы, и справа в блоках настройки выбираем вкладку «Атрибуты страницы». В ней из выпадающего списка с названием «Шаблон», выбираем название шаблона которое мы задавали выше.
5. Сохраняем. Теперь можно работать с шаблоном и задавать код для вывода нужной нам информации на этой странице.
Задача 1. Вывести рубрики или отдельную рубрику на странице в WordPress.
Для этих целей мы будем использовать функцию get_categories(). Дополнительно мы зададим аргументы для этой функции. Вы в свою очередь можете более детально ознакомиться с этой функцией в этой статье.
Здесь указан код для работы со всеми категориями, присутствующими на сайте. Если вы хотите ограничить этот параметр и вывести одну рубрику, то в поле ‘include’ приведенного выше кода задайте id рубрики. Узнать его можно перейдя в админке в раздел «Записи» — «Рубрики», справа нажимаем на нужную рубрику и переходим на страницу ее редактирования. Сверху, в строке браузера вы сможете увидеть ее id.
Переходим в файл category-page.php и редактируем его содержимое следующим образом.
Как видно, вверху файла добавлен вызов функции get_categories() с аргументами, а ниже цикл перебора категорий подходящих под заданные нами параметры.
У вас должен получиться примерно такой результат.
Задача 2. Как вывести записи из рубрик на страницу в WordPress.
Для решения этой задачи будет использоваться класс WP_Query<>. Для вывода постов рубрики также задаем список аргументов, которые укажут параметры выборки. Опять открываем наш файл category-page.php и добавляем в него код для вывода записей.
Теперь нужно задать какую информацию о посте нужно выводить, обычно это ссылка с названием поста. Финальный код для вывода записей по рубрикам.
Вот результат работы данного кода.
Чтобы вывести записи из определенной категории достаточно указать значение id для категории в аргументах к функции get_categories().
Аналогично данный код можно использовать для вывода категорий с постами и на главной странице сайта на WordPress. Только редактировать нужно будет файл index.php, который находиться в корневой папке вашей темы.
Используем плагины
Если вы не хотите создавать шаблоны и работать с кодом, тогда вы можете поставить один из многих плагинов с репозитория WordPress, которые помогут вам реализовать приведенный выше функционал. Есть целый ряд готовых решений, которые отличаются дизайном, количеством настроек и немного функционалом, например: List category posts, The Post Grid, Post Grid, WP Show Posts.
Для примера я покажу, как можно использовать плагин WP Show Posts.
1. Идем в админку, меню «Плагины» — «Добавить новый». Ищем в строке поиска название плагина «WP Show Posts». Устанавливаем и активируем его.
2. Слева в меню у вас появиться пункт «WP Show Posts». Переходим в него.
3. Сверху нажимаем «Add new».
4. На первой вкладке настроек можно выбрать: тип записи, таксономию (например, после выбора категории появиться список созданных вами категорий), количество постов и чекбокс для включения пагинации.
5. Вторая вкладка это выбор разметки, где можно задать количество колонок и отступы между ними.
6. Далее идут настройки изображений, и вывода контента записи, где вы можете задать длину краткого описания и тег для ссылки заголовка поста.
7. Вкладка meta. Позволяет указать выводить ли автора, дату, категорию и количество комментариев к каждому посту.
8. More settings включают в себя настройки по сортировке данных для вывода.
Задаем заголовок, указываем настройки и жмем справа опубликовать. Копируем шорткод справа в блоке «Usage».
После этого переходим в раздел «Страницы» — «Добавить новую». Указываем ее название, а в редакторе Gutenberg выбираем блок Шорткод, куда вставляем скопированный ранее код. Сохраняете и проверяете результат работы.
На этом сегодня все. Я постарался показать, как сделать страницу рубрикой WordPress плагином или же без плагинов с помощью кода. Надеюсь, материал был для вас полезен.
Источник
Разнообразные возможности вывода записей на страницах WordPress
Особенность движка WordPress в том, что по умолчанию вверху страницы находятся записи, которые добавлялись позже всего. Это очень удобно, если вы ведете блог, регулярно публикуете статьи, небольшие заметки. Но вывод записей в таком порядке далеко не всегда приемлем для других целей. Простой пример – вы даете подробную инструкцию, с каждой статьей погружаете читателя в премудрости дела. Представьте, что произойдет, когда вывод записей на блоге WordPress будет выполняться по дате добавления. Новички запутаются, опытные юзеры не смогут найти то, что им нужно. Начнется настоящий кавардак!
Хотите, чтобы на главной страничке не «висели» записи по дате, все статьи были разбиты по категориям? Тогда данный материал будет полезен для вас. Мы научим популярным и простым методам настройки.
Самый элементарный способ
Чтобы реализовать задуманное, понадобится влезть в код ВордПресс. Найдите файл, который называется category.php или archive.php. Тем, кого интересуют настройки главной страницы, стоит поискать файл index.php. В файлах вы найдете кусочек кода, отвечающий за список. Как понять, в какое место вставить код? Все очень просто. Для вывода изменения вносятся в код между такими частями
while ( have_posts() )
endwhile
Также можно сделать это в конце шаблона:
Тем, кто правит через админку, мы настоятельно рекомендуем создавать копию. Если этого не сделать, вы не сможете отменить изменения. Есть вероятность, что шаблон будет испорчен.
Как только вы найдете строку query_posts(‘cat=2′), можете приступать к ее редактированию. Именно она отвечает за вывод рубрик. Цифра 2 соответствует ID категории. Для смены категории меняем ID на цифру, отвечающую другой категории. А если прописать сразу несколько цифр разделов, вывод не последних новостей wordpress будет осуществляться из разных категорий.
Как выглядит код?
Каким будет код для вставки в шаблон? Предлагаем уже готовый:
Упомянутый выше код запустит цикл, позволит вывести все записи друг за дружкой.
Как определить ID категории?
Вам понадобилось узнать ID – как сделать это быстро и легко? Открываем «Записи», отправляемся в «Рубрики». Необходимо навести курсор на интересующую вас рубрику. Появится текст в левом углу снизу. Цифра после есть ID категории.
Обращаем ваше внимание на один важный момент. Оформлять вывод рубрик блога на WordPress вам придется самостоятельно, используя CSS. Если эта тема вам незнакома, могут возникнуть трудности. В таком случае, лучше воспользоваться выводом новостей с помощью плагинов.
ТОП-7 лучших плагинов ВордПресс для вывода рубрик
Далее мы расскажем о супер модулях для настройки отображения контента так, как хочется именно вам.
Позволяет настроить привлекательные блоки с читабельными записями. В дальнейшем их несложно украсить на свой вкус, добавить миниатюры и так далее. Поддерживает работу с большинством версий ВордПресса, распространяется бесплатно.
Позволяет отображать записи сразу в нескольких колонках, сортировать данные по различным параметрам, добавлять данные о посте в превью и пр. Стиль каждого блока легко настраивается посредством CSS. Еще одной интересной особенностью модуля является его дружелюбность по отношению к поисковикам.
Очень хороший плагин, заточенный под анонсирование страничек. Доступны 3 стиля отображения, удобная адаптивная сетка.
Великолепный модуль Wordress для вывода записей, рубрик страниц. Четыре стиля отображения, вывод осуществляется по меткам. Широкие возможности для оптимизации внешнего вида. Также доступен вывод названия на страничке с анонсами. И если посетитель сайта кликнет по одной из категорий, записи будут отображаться из нее.
- Recent Posts Widget Extended
Еще один шикарный виджет, позволяющий выводить анонсы в зависимости от имени автора, метки и пр. Настраивается размер картинок, внешний вид, дата и пр. Одно из лучших дополнений для вывода.
Хотите, чтобы содержимое контента страницы сайта на WordPress отображалось посредством плиток? Сделать это несложно, если установить Post Tiles.
Еще один интересный плагин ВордПресс, предназначенный для вывода страниц в виде мега стильной, адаптивной сетки. При наведении можно выбирать дополнительные эффекты, выводить публикации по заданным категориям и пр.
Get Posts. Особенности настройки
В качестве альтернативного варианта предлагаем рассмотреть опцию Get Posts. Используя ее, вы сможете настроить вывод контента в любом месте. Можно обойтись без установки дополнительных плагинов и «утяжеления» платформы.
Если в двух словах, то данная опция является одной из базовых. Она непременно понравится тем, кто не ищет легких путей. Чтобы начать работу с get_posts, необходимо:
- Подключиться к веб-сайту, используя FTP. Очень удобно для этих целей использовать бесплатный редактор Notepad++. Второй способ – скачать на ПК искомый, внести необходимые правки, затем выгрузить его на хостинг. Есть и третий способ – воспользоваться стандартным редактором WordPress, расположенным в разделе «Внешний вид» / «Редактор». Найти необходимый вам файл сможете в правой части экрана. Только не забывайте о том, что нужно всегда создавать резервные копии!
- Вставить код функции:
‘category’ => 9
$iwposts = get_posts( $args );
foreach( $iwposts as $post )
- Задать нужные аргументы, сохранить файл.
Подробнее об аргументах
У функции get_posts синтаксис имеет такой вид:
get_posts( $args );
$args представляет собой массив аргументов для настройки параметров вывода записей. Впрочем, таких аргументов существует немало:
- Order. Сортирует записи ВордПресса.
- Include. Выводит странички с прицелом на ID.
- Exclude. Помогает исключить файлы с идентификаторами.
- Orderby. Отличный способ настроить сортировку по одному из значений. Например, контенту (content), паролю (password), заголовку (post_title) или даже в случайном порядке.
- Posts_per_page. Предназначен для настройки количества выводимого контента.
- Category. Размещение с конкретным ID в категории.
- Category_name. Публикация с указанным именем. Для настройки имени применяется ярлык.
- Tag. В принципе, все и так понятно – статьи выводятся с указанием тегов.
- Meta_key,meta_value. Название говорит само за себя – вывод контента с указанными полями.
- Offset. Позволяет настроить вывод списка с 3, 4 или любой другой статьи.
- Post_parent. Вывод дочерних страниц.
- Post_status. Просмотр контента с конкретным статусом: вложения, личные записи, черновики, уже опубликованные страницы и пр.
- Post_type. О каком типе поста идет речь.
Как настроить публикацию с применением опции Get Posts?
Только что рассказали о том, как настроить вывод названия статьи, ссылку. Однако можно работать не только с этими параметрами. Код, который выведет изображения на сайте (на странице) WordPress, выглядит так:
Как вывести описание? Достаточно добавить следующий код:
Чтобы вывести дату, используйте:
3 варианта размещения get posts
Когда для отображения используется плагин вывода записей, вопросов почти не возникает. Другое дело, когда нужно вставить код самостоятельно в определенное место. Выбор файла, места зависит от того, где именно хотелось бы вывести публикации Существует 3 распространенных варианта:
- Боковая панель (сайдбар). Все изменения вносятся в sidebar.php
- Текст статьи. Правки осуществляются в single.php
- Необходимо вывести запись под текстом? Ищите page.php
Немного CSS не помешает
Добиться более привлекательного вывода записей можно с помощью… магии CSS. Вставьте код, который увидите ниже, в style.css:
.iw-get-post <
border:1px solid #ccc; /*цвет и толщина рамки*/
background:#f5f5f5; /*цвет фона*/
padding:10px; /*внутренний отступ*/
margin-bottom:10px; /*отступ снизу*/
box-shadow:0 0 6px #555; /*тень*/
.iw-get-post .post-title-get-post <
display:block;
width:100%;
font-size:18px; /*размер шрифта заголовка*/
text-align:center; /*выравнивание по центру*/
margin:10px 0px;
Хотите за несколько секунд настроить вывод в один ряд по несколько записей. Все в ваших руках – код уже готов:
.iw-get-post <
border:1px solid #ccc; /*цвет и толщина рамки*/
background:#f5f5f5; /*цвет фона*/
padding:10px; /*внутренний отступ*/
margin-bottom:10px; /*отступ снизу*/
box-shadow:0 0 6px #555; /*тень*/
width:28%; /*ширина*/
float:left;
margin-left:1%; /*отступ слева*/
margin-right:1%; /*оступ справа*/
min-height: 650px; /*минимальная высота блока (меняете под себя)*/
.iw-get-post .post-title-get-post <
display:block;
width:100%;
font-size:18px; /*размер шрифта заголовка*/
text-align:center; /*выравнивание по центру*/
margin:10px 0px;
min-height: 80px /*минимальная высота заголовка задаётся для выравнивания по высоте (меняете значение на своё)*/;
Выводы
Очень надеемся, что материал помог вам разобраться с выводом публикаций в нужном порядке. Если статья оказалась полезной и понравилась вам, не забудьте прокомментировать ее и поделиться ценным контентом в социальных сетях. Будем очень благодарны за это!
Настраивая колонки, вывод публикаций, помните о самом главном. Вывод записей настраивается не для красоты (точнее, не только для красоты), а для повышения юзабилити вашего сайта. Ресурс должен быть интересным, удобным для посетителя. Даже самый уникальный контент не даст результата, если он будет плохо восприниматься. Настройте вывод страниц WordPress, чтобы информация была доступной, понятной, читабельной. И ваш сайт непременно станет успешным!
Источник