- Вывод постов на странице, постраничная навигация
- Плагин постраничной навигации WP-PageNavi
- Комментарии — 32
- Как вывести посты по рубрикам на отдельной странице в WordPress
- Создание шаблона страницы
- Задача 1. Вывести рубрики или отдельную рубрику на странице в WordPress.
- Задача 2. Как вывести записи из рубрик на страницу в WordPress.
- Используем плагины
- wp_list_categories() WP 2.1
- Возвращает
- Использование
- Шаблон использования
- Аргументы передаваемые параметру $args
- Примеры
- #1 Сортировка по алфавиту
- #2 Сортировка по названию
- #3 Уберем заголовок списка категорий
- #4 Выводим только указанные рубрики
- #5 Выведем только дочерние категории
- #6 Удалим скобки, в которые обрамляется количество записей в каждой категории
- #7 Покажем список категорий со ссылкой на RSS-ленту
- #7.1 Если нужно показать ссылку-картинку вместо текста ссылки RSS фида, то используем параметр feed_image :
- #8 Выводим список произвольной (пользовательской) таксономии
- #9 CSS классы для стилизации li списка
- Заметки
Вывод постов на странице, постраничная навигация
Прежде чем я покажу готовый код, давайте подробнее рассмотрим, что имеется ввиду в заголовке и когда это лучше применять.
Вывести посты на странице в 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, и все? Подскажите, пожалуйста, как решить проблему.
Источник
Как вывести посты по рубрикам на отдельной странице в 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 плагином или же без плагинов с помощью кода. Надеюсь, материал был для вас полезен.
Источник
wp_list_categories() WP 2.1
Выводит список категорий в виде ссылок. Если перейти по ссылке, то будут показаны все посты из категории.
Хуки из функции
Возвращает
null|Строку|false . HTML код если echo=1 . Если echo=0 вернет HTML код в переменную для дальнейшей обработки.
Использование
Шаблон использования
Аргументы передаваемые параметру $args
Кроме указанных ниже параметров может принимать параметры get_terms().
- child_of (число)
- current_category (строка/массив)
- depth (число)
- echo (логический)
- exclude (строка)
- exclude_tree (строка)
- include (строка / массив)
- hide_empty (логический)
- hide_title_if_empty (логический)
- hierarchical (логический)
- order (строка)
- orderby (строка)
- separator (строка)
- show_count (логический)
- show_option_all (строка)
- show_option_none (строка)
- style (строка)
- taxonomy (строка)
- title_li (строка)
- use_desc_for_title (логический)
- number (число)
- pad_counts (логический)
- feed (логический)
- feed_type (строка)
- feed_image (строка)
- walker (объект)
child_of(число) Показать дочерние категории. В параметре указывается ID родительской категории (категория, вложенные категории которой нужно показать). current_category(строка/массив)
ID категории или массив из ID. К которым нужно добавить класс current-cat (class=»current-cat»). Это нужно, чтобы подсветить категорию через CSS стили.
В нормальном режиме такой класс добавляется к текущей категории на странице категорий. Этот параметр нужен, чтобы, например, добавить этот класс на отдельных страницах, которые не относятся к текущей категории.
С версии 4.4. в этот параметр можно передавать массив ID.
По умолчанию: »
Этот параметр контролирует глубину вложенности категорий, которые будут показаны. По умолчанию 0 — показывать все уровни вложенности (все дочерние категорий). С версии 2.5.
- 0 — все уровни вложенности (По умолчанию);
- -1 — показать все дочерние категории, но без вложенности li списков. Отменяет параметр hierarchical ;
- 1 — показать только категории первого уровня (все виды вложенных категорий не будут показываться);
- n — число — глубина вложенности которую нужно показывать. 2 — покажет категорий первого и второго уровня.
меню echo(логический)
Выводить на экран или возвращать для обработки.
- 1 (true) — да, выводить на экран;
- 0 (false) — нет, просто возвратить данные.
По умолчанию: true
Исключить категории из списка. Нужно указывать ID категорий через запятую.
- Если этот параметр указан, параметр child_of будет отменен.
- Если параметр heiararchical=true , то будет исключаться вся ветка. Если heiararchical=false , то для исключения ветки используйте параметр exclude_tree .
exclude_tree(строка) Исключить дерево категорий из списка. Указывайте ID категорий через запятую. Параметр include должен быть пустым. Если параметр heirarchical=true , то используйте exclude вместо exclude_tree .
По умолчанию: » include(строка / массив) Вывести списком только указанные категории. Список ID категорий проходит через wp_parse_id_list, поэтому можно указывать ID строкой через запятую или массивом.
По умолчанию: » hide_empty(логический)
Скрывать ли категории в которых нет записей?
- 0 (false) — показывать пустые (не скрывать);
- 1 (true) — не показывать пустые категории (скрывать).
hide_title_if_empty(логический) Нужно ли прятать $title_li если в списке нет элементов. С версии 4.4.
По умолчанию: false (всегда будет показываться) hierarchical(логический)
Показывать категории как дерево. Показывать вложенные (дочерние категории), как вложенный список.
- 1 (true) — да, древовидный тип отображения;
- 0 (false) — нет, показать сплошным типом.
По умолчанию: true
- ASC — по порядку, от меньшего к большему (1, 2, 3; a, b, c);
- DESC — в обратном порядке, от большего к меньшему (3, 2, 1; c, b, a).
Сортировка списка по определенным критериям. Например по количеству постов в каждой категории или по названию категорий. Доступны следующие критерии:
- ID — сортировка по ID;
- name — сортировка по названию (по умолчанию);
- slug — сортировка по алт. имени (slug);
- count — по количеству записей в категории;
- term_group — по группе.
По умолчанию: ‘name’
separator(строка) Разделитель между элементами. С версии 4.4.
По умолчанию: ‘
‘ show_count(логический)
Показывать/нет количество записей в категории. Число записей будет показано после названия категории в скобках (например, Психология (16)).
- 1 (true) — показывать количество записей;
- 0 (false) — не показывать количество записей.
show_option_all(строка)
Текст для отображения всех категорий.
Если передать не пустую строку, например ‘Все категории’ , то в список будет добавлена ссылка на все категории (часто это ссылка на главную страницу блога). Текстом ссылки станет текст переданный параметру, в данном случае Все категории .
По умолчанию: »
show_option_none(строка) Если функция не нашла ни одной категории для показа, то будет показан этот текст.
По умолчанию: ‘Нет рубрик’ style(строка)
Стиль вывода списка.
- list — означает, что нужно выводить списком в теге
- , вложенность категорий будет соблюдена.
- none — будут выведены только ссылки на категории ( ) разделенные тегом
.
По умолчанию: ‘list’
taxonomy(строка) Название таксономии, которую нужно обрабатывать.
По умолчанию: ‘category’ title_li(строка) Установить заголовок списка. Если изменить этот параметр на » ( title_li= ), то заголовок не будет выводиться вовсе.
По умолчанию: ‘Категории’ use_desc_for_title(логический)
Вставлять ли описание категории в атрибут title у ссылки ( ):
- 1 (true) — да, вставлять описание в title, если оно есть;
- 0 (false) — нет, не использовать описание (будет: Посмотреть все записи в рубрике «название категории»).
По умолчанию: true
number(число) Установить максимальное количество отображаемых категорий (SQL LIMIT). По умолчанию выводится без ограничений.
По умолчанию: » pad_counts(логический) Считать общее количество постов во вложенных категориях и показывать это число рядом с родительской категорией. Параметр включается автоматически при включенных show_count и hierarchical .
По умолчанию: 0 (false) feed(логический) Показать ли рядом с названием ссылку на RSS фид (rrs-2) категории. Текст переданный в этом параметре станет текстом ссылки.
По умолчанию: » feed_type(строка) Тип фида
По умолчанию: ‘rss-2’ feed_image(строка) Показать ли рядом с названием ссылку-картинку на RSS фид (rrs-2) категории. В параметре нужно указать ссылку на картинку. Если этот параметр указан, параметр $feed будет отменен.
По умолчанию: » walker(объект) Расширение объекта (класса), который предназначен для создание списка категорий. Передаваемый параметру объект — это расширение для класса Walker_Category или Walker .
По умолчанию: ‘Walker_Category’
Примеры
#1 Сортировка по алфавиту
Для того, чтобы отсортировать категории по алфавиту (orderby=name) и включить в список только категории с ID равными 16, 3, 9 и 5 (include=3,5,9,16), можно использовать следующий код:
#2 Сортировка по названию
Следующий пример сортирует категории по названию ( orderby=name ), показывает количество записей в каждой категории ( show_count=1 ) и исключает из списка категорию с ID 10 ( exclude=10 ):
#3 Уберем заголовок списка категорий
С помощью обнуления параметра title_li . По умолчанию этот параметр равен __(‘Categories’) , если установить его в null или » , заголовок списка не будет показан вообще. Следующий пример исключает категории 4 и 7, и убирает заголовок списка категорий:
#4 Выводим только указанные рубрики
Этот пример покажет список только из категорий с ID 9, 5 и 23, и изменит заголовок списка на Поэзия , который будет заключен в теги
#5 Выведем только дочерние категории
Для того, чтобы вывести только категории вложенные в категорию 8 (child_of=8) и отсортировать их по ID (orderby=id), так же показать количество записей в каждой категории (show_count=1) и убрать из атрибута title описание категорий (use_desc_for_title=0) используйте следующий вызов функции wp_list_categories :
#6 Удалим скобки, в которые обрамляется количество записей в каждой категории
Для этого получим список категорий в переменную (echo=0) и пропустим её через php функцию str_replace() , которая удалит скобки:
#7 Покажем список категорий со ссылкой на RSS-ленту
Для этого используем параметр feed=RSS , так же в этом примере список будет отсортирован по названию категорий (orderby=name) и у каждой категории будет показано количество записей (show_count=1):
#7.1 Если нужно показать ссылку-картинку вместо текста ссылки RSS фида, то используем параметр feed_image :
#8 Выводим список произвольной (пользовательской) таксономии
С версии 3.0 стало возможно выводить списки произвольных таксономий через параметр taxonomy . Так же в этом примере показывается как передавать параметры не строкой, а массивом:
#9 CSS классы для стилизации li списка
CSS Классы создается автоматически функцией wp_list_categories() . Начальное обрамление (в тег ul) задается произвольно, поэтому класс списку можно задать произвольный. А для li тега используются следующие css классы:
Заметки
Добавленные параметры в разных версиях:
- 2.3.0 — echo
- 2.5.0 — depth
- 2.6.0 — current_category
- 2.7.1 — exclude_tree
- 2.9 — pad_counts
- 3.0 — taxonomy
- 4.4 — hide_title_if_empty и separator . current_category стал не обязательным
Источник