WordPress: выводим список всех тегов (меток) в рубрике

Опубликовано: 23.08.2018

видео WordPress: выводим список всех тегов (меток) в рубрике

Меню в WordPress с помощью конструктора сайтов Elementor Pro

В одном из заказов на разработку шаблона для WordPress понадобилось выполнить нестандартную задачу — в рубрике вывести список всех тегов из статей, которые в ней находятся.



Как обычно в таких случаях, поискал решение в Интернете. Нашлось несколько вариантов. Что-то не работало, что-то было затратно по ресурсам сервера (берутся все статьи рубрики и из них циклом вытягиваются теги с дальнейшим удалением дубликатов). Но следующий оказался оптимальным и с минимумом кода, благодаря имеющимся в WordPress функциям для работы с терминами, которыми и являются элементы в таксономиях «Рубрика» и «Метка (тег)».


Генератор ключевых слов и тегов на основе подсказок Google, YouTube, eBay, Amazon, Bing

Итак, в шаблон рубрики (это может быть файл index.php , или archive.php , или category.php в зависимости от структуры вашего шаблона) необходимо вставить следующий код:

<?php $postIDs = get_objects_in_term(get_query_var('cat'), 'category'); if (!empty($postIDs) && !is_wp_error($postIDs)) { $tags = wp_get_object_terms($postIDs, 'post_tag'); if (!empty($tags) && !is_wp_error($tags)) { ?> <ul> <?php foreach($tags as $tag) { ?> <li><a href="<?php echo get_term_link($tag, 'post_tag') ?>"><?php echo $tag->name ?></a></li> <?php } ?> </ul> <?php } ?> <?php } ?>

Если необходимо вывести этот список в любом месте шаблона, то замените get_query_var('cat') на ID рубрики (узнать его можно одним способов: так или так ).


Как вывести меню Wordpress в теме. Все аргументы wp_nav_menu(). Области для меню. Урок #2

Стоит отметить, что данные берутся только для текущей рубрики , без учета подрубрик. Чтобы вывести теги с учетом подрубрик всех уровней вложенности, в вышеуказанном коде необходимо заменить вторую строку ($postIDs = ...) на этот код:

$cat = get_query_var('cat'); $catIDs = get_term_children($cat, 'category'); array_push($catIDs, $cat); $postIDs = get_objects_in_term($catIDs, 'category');