- Различные возможности вывода записей на странице WordPress
- Как осуществить вывод записей из одной категории на странице другой категории при помощи кода
- Featured Posts with thumbnails
- Posts per Cat
- Content Views
- Вывод постов на странице, постраничная навигация
- Плагин постраничной навигации WP-PageNavi
- Комментарии — 32
- get_posts() WP 1.2.1
- Возвращает
- Шаблон использования
- Использование
- Аргументы параметра $args
- Примеры
- #1 Выведем записи из рубрики
- #2 Вывод постов с отступом
- #3 Вывод постов с отступом, без нарушения основного цикла.
- #4 Возможность использовать специальные функции Цикла ВП
- #5 Последние посты отсортированные по заголовку
- #6 Случайные посты
- #7 Получить все прикрепленные файлы
- #8 Прикрепленные файлы определенного поста
- #9 Последние записи из той же рубрики
- Заметки
Различные возможности вывода записей на странице WordPress
Время на чтение: 4 минуты
По умолчанию движок WordPress выводит на сайте записи, которые были добавлены позже всего — последние статьи, посты и заметки. Для блога это весьма удобно, но не всегда вывод последних записей подходит для определенных целей.
К примеру, если у вас блог-инструкция и вы хотите научить посетителей чему-либо. Чтобы это сделать, необходимо провести пользователя от начала и до конца, то есть начать с легкого и постепенно погружать его во все премудрости своего дела. Если на главной будет активирован вывод последних статей, то новые юзеры запутаются, и быстро испугаются предстоящих сложностей обучения!
Если у вас аналогичный обучающий проект на движке WordPress, и вы хотите чтобы на главной не было списка последних записей, а красовались только посты из определенной рубрики, тогда эта статья будет полезна для вас.
Вы узнаете о всех возможных методах настройки публикации постов из выбранной категории на странице.
Как осуществить вывод записей из одной категории на странице другой категории при помощи кода
WordPress имеет массу настроек. Необязательно настраивать вывод постов на главной странице — вы можете сделать это в определенной части сайта. Порой необходимо, чтобы в одной рубрики значились записи из другой. Чтобы это осуществить вам предстоит влезть в код вашего шаблона WordPress.
Найдите файл category.php (в некоторых темах WordPress он называется archive.php). Он как раз отвечает за отображение информации на определенной странице выбранной категории. Если планируете настроить главную страницу, тогда вам предстоит отредактировать файл index.php (иногда в темах WordPress его именуют content.php).
В указанных файлах есть отрезок кода, который отвечает за список записей на странице. Чтобы вывести заданные вами рубрики на страницу, вам предстоит внести изменения в код между
а точнее добавить строку кода перед тегом while. Найдите строчку такого вида
Именно она поможет вывести записи выбранной вами рубрики на странице. Цифра 2 в этом коде — это ID категории. Если хотите сменить ее, тогда просто смените цифру на ID другой рубрики. Либо пропишите через запятую сразу несколько разделов, вывод которых вы хотите осуществить.
Это самый простой способ, как вывести записи не последних постов со всех или только одной категории, а из указанной вами рубрики. Однако, в разных шаблонах есть свои нюансы, потому такой метод для вас может и не подойти. Есть облегченный способ, как сделать вывод рубрики в указанном месте — воспользуйтесь специальным плагином WordPress.
Featured Posts with thumbnails
С этим модулем WordPress вы сможете не только настроить вывод рубрики, но и создать привлекательные блоки с определенными записями. Эти блоки можно будет украсить по своему усмотрению, и добавить миниатюры изображений для записей.
Плагин Featured Posts with thumbnails предоставляется бесплатно и работает со всеми версиями движка Вордпресс. С ним вы сможете настроить вывод последних постов, либо задать категории, которые необходимо вывести в блоке. Модуль позволяет создавать блоки с определенным названием, заданным количество записей на странице и выбранным размером миниатюр изображений. Огромное преимущество плагина в том, что вы можете не только настроить вывод категории на странице, но и создать собственный «микс» статей, добавляя их по отдельности.
Posts per Cat
Еще один простой и полезный плагин — Posts per Cat, который поможет вам быстро настроить вывод последних записей указанной рубрики в выбранной части сайта. Кроме того, вы сможете значительно сэкономить визуальное место на странице, так как Posts per Cat позволяет выводить посты в виде нескольких колонок.
Возможности модуля Posts per Cat:
- отображение записей в одной или нескольких колонках (до 4);
- в настройках можно указать ID рубрики, которые вы хотите добавить в блок, и которую вы хотите исключить;
- записи можно сортировать по названиям и другим параметрам;
- можно в превью записи добавить информацию о посте (отобразить количество комментариев, добавить миниатюру изображения, вводный абзац и другое);
- стиль блоков можно настроить при помощи CSS;
- модуль дружит с поисковиками — оптимизирует информацию для ПС-машин.
Content Views
Этот плагин содержит очень много функций. Помимо вывода определенных категорий, вы сможете настроить отображение записей по выбранным тегам, авторам и другим критериям. Дополнение обеспечит создание нескольких колонок, которые можно оформить как угодно. Кроме того, при помощи данного модуля можно изменить меню навигации.
И помните, что вы делаете это (настраиваете вывод записей) не ради красоты, а ради повышения юзабильности вашего блога. Только тот сайт станет успешным, который понятен и интересен посетителям!
Источник
Вывод постов на странице, постраничная навигация
Прежде чем я покажу готовый код, давайте подробнее рассмотрим, что имеется ввиду в заголовке и когда это лучше применять.
Вывести посты на странице в WordPress — это значит создать шаблон страницы (page template) и забацать туда цикл, query_posts.
Для чего нужно такое вытворять? Рассмотрим несколько вариантов:
- представьте, что вам нужно вывести на одной странице записи сразу из нескольких категорий
Вообще можно скомбинировать любые условия, используя эту статью. Параметры, которые описаны для WP_Query также подойдут и для query_posts.
Теперь я думаю порядок действий вам понятен? Создаете шаблон страницы, пихаете наверх query_posts, потом цикл, потом постраничную навигацию…
Кстати о ней. Просто так она не будет работать. Как это исправить?
Пожалуй стоит описать порядок действий более подробно.
- Создать шаблон страницы.
- Определить номер текущей страницы.
- Использовать query_posts с необходимым набором аргументов, при этом не забыв включить в него номер текущей страницы.
- Добавить цикл.
- Добавить функцию постраничной навигации, например 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, и все? Подскажите, пожалуйста, как решить проблему.
Источник
get_posts() WP 1.2.1
Получает записи (посты, страницы, вложения) из базы данных по указанным критериям. Можно выбрать любые посты и отсортировать их как угодно.
Это обертка для класса WP_Query, т.е. в функцию можно передать такие же параметры.
У этой функции есть предустановленные параметры. Иногда их нужно изменить, чтобы они не мешали. Предустановленные параметры:
- post_type = post — если мы указываем вывод таксономии для типа записи отличного от post, то параметр post_type нужно изменить — он по умолчанию равен post .
- numberposts = 5 — если мы забудем изменить параметр numberposts , то долго можем недоумевать почему выводится только 5 записей вместо нужных 20.
- suppress_filters = true — этот параметр отключает работу некоторых фильтров (хуков). Читать подробнее.
get_posts() — это аналог query_posts(). Отличается тем, что get_posts() не вмешивается в глобальный запрос WP, а создает отдельный экземпляр класса WP_Query . Подробнее читайте здесь.
Возвращает
Пустой массив, если не удалось получить записи.
Массив WP_Post объектов (записей). Каждый объект в массиве выглядит так:
Шаблон использования
Использование
Аргументы параметра $args
Эта функция является оберткой для WP_Query, поэтому она может принимать такие же параметры.
- numberposts (число)
- posts_per_page (число)
- offset (число)
- category (число/строка/массив)
- category_name (строка)
- tag (строка)
- include (строка/число/массив)
- exclude (строка/число)
- meta_key и meta_value (строка)
- meta_query (массив)
- date_query (массив)
- post_type (строка/массив)
- post_mime_type (строка/массив)
- post_status (строка)
- post_parent (число)
- nopaging (логический)
- orderby (строка)
- order (строка)
- suppress_filters (true/false)
numberposts(число) posts_per_page(число) Количество выводимых постов. Установить на 0 , чтобы ограничить вывод максимальным числом постов на страницу (устанавливается в настройках ВП) или поставить -1 чтобы убрать ограничения вывода (LIMIT).
По умолчанию: 5 offset(число) Отступ от первого поста (записи). category(число/строка/массив)
Укажите ID категории из которой нужно получить посты. Можно указать ID со знаком минус -3 , тогда эта категория будет исключена (будут получены все записи, кроме записей из категории 3). Можно указать несколько ID через запятую в виде строки 3,5,12 или -3,-5,12 ).
В значении нужно передавать ID, а не название категории.
Смотрите также описание параметра cat у WP_Query .
category_name(строка) Показывать посты только из этой категории (указывается название или альтернативное имя(slug) категории).
По умолчанию: » tag(строка) Получить записи имеющие указанные в этом параметре метки. Нужно указывать альтернативное имя (slug) метки. Если указать несколько имен (меток) через запятую, то будут получены записи соответствующие любой метке, а если разделить пробелами, то будут получены записи имеющие все указанные метки.
По умолчанию: » include(строка/число/массив)
ID постов, которые нужно получить. Если указывается строка, то ID нужно разделять запятыми или пробелами. Пример, получит 6 постов: ‘45,63,78,94,128,140’.
Важно: Указав этот параметр, бессмысленно указывать параметры posts_per_page , offset , category , exclude , meta_key , meta_value и post_parent .
По умолчанию: »
exclude(строка/число) ID постов которые нужно исключить из выборки, указывать через запятую или пробел.
По умолчанию: » meta_key и meta_value(строка)
Получить посты имеющие указанное произвольное поле (meta_key) со значением (meta_value).
Можно указать meta_key и meta_value , тогда будут получены посты, у которых есть указанное метаполе и значение которого равно указанному значение.
Или можно указать только meta_key , тогда будут получены все записи у которых это метаполе есть и не важно какое там значение.
meta_query(массив) Выборка записей по произвольным полям. Подробнее см. в описании WP_Query (meta_query).
По умолчанию: [] date_query(массив) Выборка записей по датам. Подробнее см. в описании WP_Query (date_query).
По умолчанию: [] post_type(строка/массив)
Какого типа посты нужно получать, может быть:
- any — все типы, кроме revision и типов у которых указан параметр exclude_from_search=true .
attachment — прикрепленные записи.
по умолчанию WP_Query ставит статус ‘post_status’=>’publish’ , а вложения имеют статус ‘post_status’=>’inherit’ , поэтому чтобы вывести вложения нужно еще изменить параметр post_status на ‘inherit’ или ‘any’.
По умолчанию: ‘post’
Какого типа вложения нужно получить. Можно использовать, когда параметр post_type = attachment .
- image/jpeg
- image/png
- image/gif
- image — для любых картинок
- audio/mpeg
- application/pdf
- application/zip
Вместо одно миме типа можно указать несколько в массиве. Полный список миме типов смотрите здесь.
Статус записи. Можно передать несколько статусов через запятую. Может принимать:
- publish — опубликовано
- private — личная запись
- draft — черновик
- future — запланировано
- pending — на модерации
- inherit — вложение, любое вложение получает этот статус. Ставиться автоматически, при $post_type=’attachment’
- any — все статусы
По умолчанию: publish
post_parent(число) Показать только дочерние записи к указанному ID.
По умолчанию: 0 nopaging(логический) Включить или отключить пагинацию, если стоит true параметр $numberposts игнорируется.
По умолчанию: false orderby(строка)
Сортировать результат по указанным полям. Можно указывать несколько полей сортировки, через пробел. Допустимые поля:
- author — сортировать по ID авторов.
- content — сортировать по контенту.
- date — сортировать по дате создания записи.
- ID — сортировать по ID записи. Указываются ID в массиве или через запятую.
- menu_order — сортировать по полю menu_order . Используется для постоянных страниц и вложений (картинки, файлы и т.п.).
- mime_type — сортировать по MIME типу. Используется для вложений.
- modified — сортировать по дате изменения.
- name — сортировать по альтернативному имени (slug).
- rand — случайная сортировка. Создает повышенную нагрузку на БД.
- status — сортировать по статусу (черновик, опубликовано и т.п.)
- title — сортировать по названию.
- parent — сортировать по ID родителя (parent ID).
- password — сортировать по паролю.
- type — сортировать по типу (пост, страница и т.д. ).
- comment_count — по количеству комментариев.
- meta_value — по значению указанного произвольного поля.
- post__in — учитывает порядок указанных ID в параметре include.
Префикс post_ у полей таблицы опускается для удобства. Например вместо date можно написать post_date , вместо content post_content и т.д.
По умолчанию: ‘date’
меню order(строка) В каком направлении упорядочить, указанное в параметре $orderby , поле:
ASC — по порядку (от меньшего к большему: а,б,в).
DESC — в обратном порядке (от большего к меньшему: в,б,а).
По умолчанию: ‘DESC’ suppress_filters(true/false)
При true (по умолчанию) пропускает все хуки изменения SQL запроса, такого типа posts_* или comment_feed_* .
Какие именно фильтры отключаются смотрите здесь.
В функциях WP_Query и query_posts() этот параметр отключен по умолчанию (равен false).
suppress_filters = true не виляет на работу фильтра pre_get_posts.
Такое отключение фильтров по умолчанию, может ввести в замешательство, если есть плагины влияющие на вывод записей, через фильтры SQL запроса, например WPML. В таких случаях suppress_filters нужно отключить.
По умолчанию: true
Примеры
#1 Выведем записи из рубрики
Допустим у нас в категориях есть рубрика «Статьи» (ярлык articles ) в которую добавляются записи ( post_type=post ). Нам нужно вывести 6 таких записей на произвольной странице.
#2 Вывод постов с отступом
Если у вас на главной выводится один, последний пост, а нужно вывести еще 5 предыдущих из категории 1, то можно использовать такой код:
#3 Вывод постов с отступом, без нарушения основного цикла.
Если была использована функция get_posts() и после нее нужно использовать стандартный цикл WordPress, то нужно сохранить глобальную переменную $post , делает это так:
#4 Возможность использовать специальные функции Цикла ВП
Стандартно в цикле основанном на get_posts() невозможно использовать, например, функцию the_content() или the_date() . Эта проблема решается функцией setup_postdata() которой нужно передать переменную $post :
Данные можно также получить через обращение к свойству объекта (объект->свойство_объекта). Например, для этого примера $post->ID будет равно ID поста, $post->post_content будет содержать контент записи. Свойство объекта это колонка таблицы БД posts. Название колонок можно посмотреть тут.
Не забывайте, что на экран данные выводятся через php оператор echo :
#5 Последние посты отсортированные по заголовку
Получим последние посты отсортированные по заголовку в алфавитном порядке. Следующий пример выведет дату, заголовок и цитату поста:
#6 Случайные посты
Получим 5 случайных постов, реализуется за счет параметра ‘orderby’ => ‘rand’ :
#7 Получить все прикрепленные файлы
Используется за пределами Цикла WordPress. Следующий код выведет заголовок, ссылку и цитату прикрепленного файла:
#8 Прикрепленные файлы определенного поста
Код нужно использовать внутри Цикла WordPress, где переменная $post->ID :
#9 Последние записи из той же рубрики
Выведем список последних записей текущей рубрики, в которой находится запись. При этом исключим текущую запись:
Заметки
С версии 2.6 изменен ряд передаваемых значений у параметра orderby — префикс post_ был удален, например, было post_title, стало просто title.
Хотите дешево купить просмотры в Инстаграме на видео или ТВ-трансляцию, но не знаете, где? Попробуйте посетить сайт Doctor SMM, где Вам будет предложена одна из самых низких цен по рунету на просмотры. Торопитесь, так как предложение действует ограниченное время! К тому же здесь Вы сможете очень быстро приобрести ресурс с оптимальным, конкретно для Вашей страницы, скоростным режимом. Развивайте аккаунт быстро и легко!
Источник