Меню

WordPress вывести все посты рубрики

Вывод постов на странице, постраничная навигация

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

Вывести посты на странице в WordPress — это значит создать шаблон страницы (page template) и забацать туда цикл, query_posts.

Для чего нужно такое вытворять? Рассмотрим несколько вариантов:

    представьте, что вам нужно вывести на одной странице записи сразу из нескольких категорий

Вообще можно скомбинировать любые условия, используя эту статью. Параметры, которые описаны для WP_Query также подойдут и для query_posts.

Теперь я думаю порядок действий вам понятен? Создаете шаблон страницы, пихаете наверх query_posts, потом цикл, потом постраничную навигацию…

Кстати о ней. Просто так она не будет работать. Как это исправить?

Пожалуй стоит описать порядок действий более подробно.

  1. Создать шаблон страницы.
  2. Определить номер текущей страницы.
  3. Использовать query_posts с необходимым набором аргументов, при этом не забыв включить в него номер текущей страницы.
  4. Добавить цикл.
  5. Добавить функцию постраничной навигации, например wp_pagenavi().

А теперь полностью готовый код:

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

Плагин постраничной навигации WP-PageNavi

В предыдущем примере я использовал функцию wp_pagenavi() . Она отвечает за постраничную навигацию и является составляющей частью плагина WP-PageNavi (русское название: Список страниц).

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

Плагин очень легко устанавливается через админку сайта и так же легко настраивается — так что для этих целей рекомендую использовать именно его.

Впервые познакомился с WordPress в 2009 году. Организатор и спикер на конференциях WordCamp. Преподаватель в школе Нетология.

Если вам нужна помощь с сайтом или разработка с нуля на WordPress / WooCommerce — пишите. Я и моя команда будем рады вам помочь!

Комментарии — 32

Кучу статей перерыла, чтобы решить свою проблему с навигацией на пользовательской странице — ничего толкового нигде нет. И только ваша статья действительно помогла. Спасибо!

я рад, что смог помочь))

Почитал Ваш пост, чувствую, что ответ где то здесь :).
Такая задача. Есть статья на 12 килознаков, я хочу разбить её на 3 части. По нажатию на ссылку на статью в меню, читатель должен попадать на вначале первую часть, далее читает вторую часть и напоследок третью. Однако в начале каждой части должна быть ссылка на статью в полном варианте, для тех кто хочет открыть сразу всю статью и читать не листая страницы туда-сюда. Понятно что нужно сделать три страницы для каждой из трех частей отдельно. Но как их собрать в кучу? подойдет ли для этого код помещенный в статье, там речь идет о постах (записях) а не о страницах? Или можно как то проще это реализовать?

попробуй сделать GET-запрос в single.php)

Я правильно понимаю вставляю код на свою страницу в таком виде

почемуто не работает.

Классная статья, очень помогла!
Спасибо тебе Огромное!)

пожалуйста) рад, что помог)

Все понял теперь выводятся.

Может быть сможеш разобратся как сделать чтобы хлебные крошки работали на странице. допустим страница у меня «Новости» на ней выводятся заметки из категории допустим «Блог» вот когда я на странице «Новости» перехожу по заметке то в хлебные крошки пдстовляется уже не «Новости» а «Блог» и потом название заметки.

Хлебные крошки использую от dimox

суй код после хлебных крошек)

Привет, подскажи пожалуйста как вывести 3 определенные записи в слайдер, (например: post=754,234,432)? Спасибо

используй параметр post__in = array(754,234,432) для query_posts.
Полный список параметров смотри здесь.

А можешь показать куда вставить)(что удалить) на примере

тот огрызок кода вообще нерабочий) на третьей строчке есть две скобки — где они открываются?

Спасибо, информация очень помогла.

Спасибо! Очень полезная и позновательная статья.

Наконец-то все работает) Спасибо))

У меня вопрос: Пытаюсь таким куском кода на одной странице выводить посты с разных категории, но столкнулась с проблемой: как только нет постов с такой категории — то дальнейшие if-ы уже не обрабатываются. Почему? Разве if не подразумевает, что если нет подходящего условия — идти дальше? Почему обрывается исполнение?

Читайте также:  Как сделать маску для лица отбели

Попробуйте небольшие изменения:

Вы мой спаситель))

Это логично ставить изначально условие)) Спасибо еще раз)

пожалуйста) рад помочь)

Задача была такая: вывести на главной странице посты из 2-х категорий с id 102 и 103, с сортировкой по дате добавления в хронологическом порядке, и с количеством постов на странице 12 шт. Получилось вот так:

Все отлично работает, но вот беда все же одна есть: на главной странице отображаются посты из нужных категорий, т.е. с id 103 и 102, а вот на второй странице отображаются посты из всех других категорий, к примеру, с id 3 или 4 или 5. В принципе, мне и не нужна эта вторая страница вовсе (эта та, которая выглядит как сайт.ru/page/2/, т.к. вся нужная мне информация присутствует на первой. Но вот как от этой второй и последующих страниц избавиться?
Посмотрела, у меня в шаблоне index.php количество страниц задано через переменную

В php не сильна, но пришла такая мысль в голову: может, присвоить этой переменной значение 1, и все? Подскажите, пожалуйста, как решить проблему.

Источник

Как вывести посты по рубрикам на отдельной странице в 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 — 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() .

Читайте также:  1с вывести список контекстное меню

Если вы все же изменили глобальную переменную $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..):

Источник