- Архивы таксономии: Вывод списка постов по терминам таксономии
- Что вы будете создавать
- Что вам потребуется
- 1. Приступаем к работе: регистрация типа записи и таксономии
- 2. Настройка шаблона архива
- 3. Заполнение шаблона архива: выборка терминов таксономии
- 4. Заполнение шаблона архива: определение запроса
- 5. Заполнение шаблона архива: добавление цикла
- Весь цикл
- get_the_taxonomies() WP 2.5.0
- Возвращает
- Использование
- Примеры
- #1 Демонстрация работы для обычного поста
- #2 Демонстрация работы для типа записи с таксономиями
- #3 Изменим формат вывода
- get_terms() – функция для вывода элементов таксономий
- Пример. Выводим отсортированные по имени рубрики в виде выпадающего списка
- Синтаксис
- Параметры массива $args
- Возвращаемые значения
- Выводим список из 5-и рубрик, отсортированных по количеству записей
- the_taxonomies() WP 2.5.0
- Возвращает
- Использование
- Аргументы параметра $args
- Примеры
- #1 Демонстрация вывода
- #2 Демонстрация вывода для произвольных таксономий
- #3 Выведем список «обвернув» его в тег
- Список изменений
- Код the_taxonomies() the taxonomies WP 5.8.1
- Cвязанные функции
- Для записей
- Таксономии: рубрики, метки, .
Архивы таксономии: Вывод списка постов по терминам таксономии
Что вы будете создавать
По умолчанию, WordPress создает архивы, в которых перечислены все ваши записи по хронологии в обратной последовательности. Если пользователи ищут записи в определенной категории или содержащие определенный термин таксономии, им придется посетить страницу архива этой категории или термина:
Но что, если вы хотите, чтобы ваш главный архив записей определенного типа стал более удобным? В этой статье я покажу, как создать страницу архива для записей пользовательского типа, которая отображает записи данного типа, с разбивкой по категориям таксономии.
Таким образом, вместо одного длинного списка посетители будут видеть список по каждому термину таксономии.
Что вам потребуется
Для работы с этой статьей вам понадобится установленная и настроенная система WordPress и редактор кода. Вы будете создавать тему, которая является дочерней для темы twentyfourteen , так что вам нужно ее установить (она является темой WordPress по умолчанию).
Я не буду показывать вам, как создается дочерняя тема, но если это для вас проблема, просто взгляните на таблицу стилей в подборке кодов для этой статьи.
1. Приступаем к работе: регистрация типа записи и таксономии
По моему опыту эта техника используется чаще для записей пользовательского типа и таксономии, чем для стандартных записей и категорий или тегов, так что я начну с регистрации типа записи и таксономии.
Примечание: Я использую тот же тип записей ‘animal’, который я зарегистрировала в предыдущей статье по созданию иллюстрированных архивов. Если вы захотите создать более продвинутый набор инструментов, вы можете объединить технику, описанную в той статье, с техникой, которую я покажу вам здесь, и выводить списки терминов таксономии на своем сайте с характерными изображениями.
В файл функций вашей темы добавьте следующий код, чтобы зарегистрировать тип записей:
Затем добавьте код для регистрации таксономии:
После того, как вы это сделали, добавьте в эти разделы некоторые данные. Ниже вы можете видеть данные, которые я добавила для применяемых терминов таксономии.
Я не особо забочусь о достоверности моих данных, в частности принадлежности некоторых животных к определенным семействам, поэтому, пожалуйста, не пишите в комментариях, что у меня что-то неправильно!
2. Настройка шаблона архива
Следующий шаг заключается в создании шаблона архива для нового типа записей. В вашей теме создайте новый файл под названием archive-animal.php .
Так как эта тема является дочерней для темы twentyfourteen , для шаблона архива потребуется код, скопированный из этой темы в качестве оболочки для пользовательского цикла, который вы собираетесь создать.
Так что добавьте в шаблон архива следующие строки:
Примечание: Если вы работаете с собственной темой, скопируйте код оболочки из индексного файла или файла архива темы.
3. Заполнение шаблона архива: выборка терминов таксономии
Так как в архиве могут выводиться животные по терминам таксономии, следующим шагом, будет выборка этих терминов.
В вашем новом файле шаблона, ниже закрывающегося тега (или ниже открывающей части кода оболочки, если вы используете собственную тему), введите термины, используя get_terms() :
Обратите внимание, что я использовала здесь два параметра:
- orderby — позволяет указать порядок отображения терминов. Я использовала значение count , так что термин с наибольшим количеством переданных ему записей будет отображаться первым, но вы можете задать порядок сортировки по имени или ID — если оставить это поле пустым, WordPress будет выдавать значения по имени. Для более подробной информации ознакомьтесь с разделом кодекса по get_terms() ;
- hide_empty — указывает WordPress не выбирать термины, без назначенных им записей. При этом если вы позже зададите тот же запрос, будет осуществляться проверка, не появились ли новые записи.
4. Заполнение шаблона архива: определение запроса
Сделав это, вы используете foreach() , чтобы указать WordPress перебрать каждый из этих терминов и выполнить запрос, который необходимо определить.
Ниже кода, который вы только что добавили, вставьте следующие строки:
Это указывает WordPress перебрать каждый термин, а затем определить запрос — он должен запускаться каждый раз. Аргументы для запроса включают тип записей и термин в таксономии ‘animal_cat’ , который является значением переменной $term .
5. Заполнение шаблона архива: добавление цикла
Определив запрос, вам нужно добавить цикл. Сначала добавляется вывод в качестве заголовка названия запрашиваемого термина. Ниже строки, которая начинается с $query , но внутри фигурных скобок оператора foreach добавьте эту строку:
Затем добавьте код, чтобы выводить записи списком:
Как вы можете видеть, это просто цикл, который выводит название каждого поста внутри ссылки на запись, и не выводит выдержки. Если хотите, вы можете добавить здесь выдержку или характерное изображение.
И в конце ниже строки, считывающей echo ‘
’;, сбрасывается запрос с помощью wp_reset_postdata() .
Весь цикл
Вот, как теперь будет выглядеть запрос и цикл:
Теперь сохраните файл шаблона и просмотрите архив данного типа записей. Вы увидите, что посты в нем выводятся по терминам таксономии, а не одним длинным списком.
Источник
get_the_taxonomies() WP 2.5.0
Получает все элементы всех таксономий связанных с записью. Получает массив HTML ссылок.
Получит таксономии в виде массива в значениях которого будут перечислены ссылки на термины, в которых находится указанная запись.
Функцию удобно использовать, когда нужно показать все связи записи с любыми таксономиями, в которой эта запись находится.
Работает с постами, новыми типами записей и с произвольными таксономиями — полный комплект.
Используйте обертку этой функции — the_taxonomies(), чтобы получить результат готовую строку для вывода на экран, а не массив.
Возвращает
Массив . Список таксономий, где ключ массива — это ярлык таксономии, а значение — это список элементов таксономии.
Использование
Параметры по которым нужно выводить (форматировать вывод) список таксономий. Может быть:
template(строка)
Шаблон вывода списка. Где %s — название таксономии, а %l — список элементов в формате указанном в параметре $term_template .
По умолчанию: ‘%s: %l.’
Формат вывода каждого элемента таксономии в списке. По умолчанию название термина, как ссылка на архив записей термина.
По умолчанию: ‘%2$s’ ,
По умолчанию: array()
Примеры
#1 Демонстрация работы для обычного поста
#2 Демонстрация работы для типа записи с таксономиями
#3 Изменим формат вывода
Чтобы изменить формат вывода, нужно указать параметры:
Источник
get_terms() – функция для вывода элементов таксономий
Это универсальная функция, позволяющая получить данные об элементах таксономий.
Короче говоря вы можете вывести в любом виде рубрики с блога, метки, а также таксономии, созданные вами . Если же надо получить текущий элемент таксономии, то воспользуйтесь функциями get_query_var() (co значением параметра равным term — так вы получите ярлык текущего элемента таксономии) и get_term_by() (со значением первого параметра равным slug ).
Пример. Выводим отсортированные по имени рубрики в виде выпадающего списка
Приведу сразу же несложный пример с кучей комментов, иначе, как мне кажется, если я начну с документации функции, то некоторым будет непонятно, как её использовать.
Вот что у меня получилось в результате выполнения этого кода на тестовом сайте:
Слева — сам список (открытый), а справа его HTML-код.
Синтаксис
$args
(строка|массив) параметры по типу, как в WP_Query, их тоже можно записать и в виде массива и в виде строки.
Параметры массива $args
taxonomy
(строка|массив) название таксономии или массив таксономий, например array( ‘category’, ‘post_tag’ ) .
number
(целое число) количество элементов, которые нужно вывести, по умолчанию выводятся все.
offset
(целое число) сколько элементов нужно пропустить, то есть если offset=2 , то начинаем с третьего.
include
(целое число|строка|массив) укажите ID элементов, которые нужно вывести, можно указать число, числа через запятую в виде строки или одномерный массив чисел, например так:
Если вы хотите исключить какие-то элементы, не пытайтесь использовать минус перед числом, просто смотрите следующий параметр.
exclude
(целое число|строка|массив) укажите ID элементов, которые нужно исключить.
exclude_tree
(целое число|строка|массив) если вы исключате родительские элементы и хотите сразу же исключить все дочерние, то этот параметр для вас.
orderby
(строка) сортировать по:
- id — по ID элементов (по умолчанию),
- count — по количеству постов,
- name — по имени,
- slug — по ярлыку,
- term_group — по значениям колонки term_group в таблице wp_terms базы данных,
- include — в том же порядке, в котором указаны элементы в параметре include,
- meta_value и meta_value_num – по значению произвольного поля,
- none — без сортировки;
order
(строка) порядок сортировки.
- ASC — по возрастанию (по умолчанию),
- DESC — по убыванию;
hide_empty
(логическое) нужно ли добавлять в результат также и пустые (без постов) рубрики/метки/элементы таксономий:
- true — не нужно (по умолчанию),
- false — нужно;
fields
(строка) в каком виде выводить результат:
- all — массив объектов элементов таксономий (по умолчанию), после print_r() он будет выглядеть так:
slug
(строка) возвращает элементы, ярлыки которых совпадают с заданным значением.
hierarchical
(логическое) нужно ли включить в результат родительские элементы, даже если в них нет постов?
- 1 — нужно (по умолчанию),
- 0 — не нужно;
name__like
(строка) возвращает только те элементы, названия которых начинаются с заданного значения (без чувствительности в регистру), например:
search
(строка) возвращает только те элементы, названия которых содержат заданное значение (без чувствительности в регистру).
pad_counts
(логическое) влияет только на числовые значения количества постов в родительских элементах.
- 1 — количество постов родительского элемента суммируется с количеством постов дочерних элементов,
- 0 — не суммируется (по умолчанию);
get
(строка)
- all — вывести все элементы, вне зависимости от параметров offset , hide_empty , child_of (по умолчанию — пустая строка)
child_of
(целое число) вывести все элементы таксономии, которые являются дочерними для элемента с указанным ID вне зависимости от уровня вложенности.
parent
(целое число) вывести элементы таксономии, которые являются дочерними для элемента с указанным ID и находятся на первом уровне вложенности. Если указать 0, то будут выведены только элементы верхнего уровня.
meta_key
(строка) Укажите это значение ключа мета поля, если хотите получить только элементы таксономи, содержащие его.
meta_value
(строка) Значение мета поля элементов таксономии для указанного ключа meta_key .
meta_query
(массив) Работает так же, как и meta_query в WP_Query при выводе постов. О нём даже есть отдельный урок.
cache_domain
(строка) (с версии 3.2) если вы планируете использовать get_terms с указанными параметрами несколько раз, укажите в качестве значения cache_domain уникальную фразу, чтобы задействовать кэш (по умолчанию — «core»).
Возвращаемые значения
Если параметр fields не изменен, то функция возвращает массив объектов, каждый из которых содержит следующую информацию об элементе таксономии.
- term_id — ID рубрики/метки/элемента таксономии
- name — название
- slug — ярлык
- term_group — значение term_group из базы данных (особого применения пока что нет, в основном — в плагинах)
- term_taxonomy_id — ID таксономии
- taxonomy — название таксономии
- description — описание элемента (можно заполнить в админке при создании и редактировании)
- parent — ID родительского элемента
- count — количество записей
Выводим список из 5-и рубрик, отсортированных по количеству записей
В этом примере параметры функции задаются в виде массива:
Тот же самый пример, но только с заданными в виде строки параметрами:
Источник
the_taxonomies() WP 2.5.0
Выводит ссылки на термины поста. Используется внутри Цикла WordPress
Также функцию можно использовать на отдельной странице поста, чтобы вывести элементы таксономии, к которым он относится.
Возвращает
null . Выводит на экран список ссылок на элементы таксономии (термины), текущего поста.
Использование
Аргументы параметра $args
Примеры
#1 Демонстрация вывода
Пример вывода для обычных постов, которые прикрепляются к рубрикам и меткам.
#2 Демонстрация вывода для произвольных таксономий
#3 Выведем список «обвернув» его в тег
Список изменений
Код the_taxonomies() the taxonomies WP 5.8.1
Cвязанные функции
Для записей
Таксономии: рубрики, метки, .
Привет, подскажи пожалуйста:
есть кастомный тип постов, представляет из себя текст песни, принадлежащий двум кастомным таксономиям Artist и Album.
Задача состоит в том, чтобы вывести на странице taxonomy-artist.php все посты(в виде ссылок разумеется), принадлежащие Artist и разложенные по Album.
Иными словами на странице должны быть название Альбома и принадлежащие ему посты текстов песен:
- Текст песни 1
- Текст песни 2
.. - Текст песни 10
- Текст песни 1
- Текст песни 2
.. - Текст песни 10
Не нашёл подходящей функции. Как реализовать?
Источник