HERTZ-GSM

Технологии. Компьютеры. Электроника.

Вывод таксономий в WordPress

Вывод таксономий в WordPressТаксономии в WordPress  — это способ группировки нескольких постов (ссылок или постов пользовательского типа).

В WordPress уже по умолчанию имеются три встроенных таксономии:

• Категории (category), которые обозначаются слагом ‘category’.
• Метки (тэги) (tag), которые обозначаются слагом ‘post_tag’.
• Ссылочные категории (link category), которые обозначаются слагом ‘link_category’.

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

Итак, чтобы сразу вывести все три стандартные таксономии, существует функция the_taxonomies(). Собственно говоря, её использование весьма простое:

<?php the_taxonomies(); ?>

Выведет все таксономии, никаких echo использовать не требуется.

Но можно вывести и другие таксономии, особенно учитывая то, что во многих шаблонах WordPress могут использоваться свои, пользовательские таксономии, а также присутствуют скрытые таксономии (post_format — форматы записей и nav_menu — созданные меню навигации, к ним прикрепляются записи (ссылки меню) ).

Для того, чтобы узнать, какие таксономии вообще у нас есть, воспользуемся функцией get_taxonomies(). Окончательно код будет выглядеть так:

<?php
$taxonomies = get_taxonomies();
foreach( $taxonomies as $taxonomy ) {
echo '<p>'. $taxonomy. '</p>';
}
?>

И он нам выведет список всех таксономий, которыми мы можем воспользоваться, к примеру:
category
post_tag
nav_menu
link_category
post_format

Мы можем ввести отдельно каждую таксономию. К примеру, нам нужно вывести только теги определённого поста (слаг post_tag). Воспользуемся функцией get_the_terms().

<?php
// из условия понятно, что функция используется в цикле, а значит глобальная перменная $post->ID задана и содержит ID поста.


$termini = get_the_terms( $post->ID, 'post_tag' );
// так как функция вернула массив, то логично будет прокрутить его через foreach()
foreach( $termini as $termin ){
echo '<a href="' . get_term_link( $termin ) . '">' . $termin->name . '</a>';
};
?>


Также вы можете использовать:
$termin->ID — понятное дело, ID элемента
$termin->slug — ярлык элемента
$termin->term_group — значение term group
$termin->term_taxonomy_id — ID самой таксономии
$termin->taxonomy — название таксономии
$termin->description — описание элемента
$termin->parent — ID родительского элемента
$termin->count — количество содержащихся в нем постов

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

Вместо
echo '<a href="' . get_term_link( $termin ) . '">' . $termin->name . '</a>';

оставим только
echo $termin->name . ' ';

Получается:

<?php
$termini = get_the_terms( $post->ID, 'post_tag' );
foreach( $termini as $termin ){
echo $termin->name . ' ';
};
?>

Теперь теги данного поста будут выводиться не как ссылки, а как текст.

Но что делать, если нам нужно вывести какую-либо таксономию во многих местах сразу, на десятках различных страниц? Каждый раз писать весь этот код? Это неудобно. Лучше запихнём его в отдельную функцию. Создадим свою функцию вывода тегов (без ссылки, в виде текста) на основе кода выше.

В функциях темы (файл functions.php) создадим свою функцию с собственным названием (к примеру, tegi()) и вставим в неё вышеуказанный код:

function tegi () {
$termini = get_the_terms( $post->ID, 'job_tag' );
foreach( $termini as $termin ){
echo $termin->name . ' ';
};
}

Теперь просто достаточно просто вставить

<?php tegi (); ?>

и получим вывод всех тегов данной записи в виде текста.


Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Защита от спама: *

Подписаться на RSS-ленту

Подпишитесь по e-mail

Архивы