Отображение таксономии категорий для пользовательского типа записей

24 июл. 2014 г., 13:20:07
Просмотры: 15.3K
Голосов: 1

У меня есть пользовательский тип записей и таксономия, которая позволяет пользователю выбрать категорию для записи.

Вот моя пользовательская таксономия:

add_action( 'init', 'create_talcat_taxonomy', 0);
function create_Talcat_taxonomy()
{
    // Регистрируем таксономию Talcat для типа записей artist
    register_taxonomy ( 'Talcat', 'artist', array( 
        'hierarchical' => true,  // Иерархическая таксономия (как категории)
        'label' => 'Категории',   // Название в админке
        'query_var' => true,      // Разрешаем использование в запросах
        'rewrite' => true         // Включение ЧПУ
    ));
}

На главной странице я делаю запрос post_type=artist, который работает нормально и выводит записи артистов. Но как я могу вывести название категории, к которой принадлежит запись, и сделать ссылку на страницу этой категории?

0
Все ответы на вопрос 2
2

Я нашел чистый и простой способ вывода таксономии, связанной с записью, используя следующий код:

<?php the_terms( $post->ID, 'НАЗВАНИЕ_ТАКСОНОМИИ', ' ', ' / ' ); ?>

Функция the_terms() получает термины, связанные с указанными объектами в заданных таксономиях.

Вот ссылка на кодекс с примерами и дополнительными деталями.

24 июл. 2014 г. 14:23:32
Комментарии

К сожалению, мне придётся подождать 2 дня, прежде чем я смогу принять это.

probablybest probablybest
24 июл. 2014 г. 16:10:27

Без проблем, не забудьте вернуться через два дня. К сожалению, так работает система

Pieter Goosen Pieter Goosen
24 июл. 2014 г. 16:15:32
2

Думаю, вы говорите о терминах, а не о категориях. Вы можете использовать функцию wp_list_categories для получения и отображения терминов, к которым принадлежит запись.

Вот рабочий пример из кодекса. Помните, что переменную $taxonomy можно изменить на category или любую пользовательскую таксономию:

<?php
$taxonomy = 'НАЗВАНИЕ ВАШЕЙ ТАКСОНОМИИ';

// получаем ID терминов, связанных с записью
$post_terms = wp_get_object_terms( $post->ID, $taxonomy, array( 'fields' => 'ids' ) );
// разделитель между ссылками
$separator = ', ';

if ( !empty( $post_terms ) && !is_wp_error( $post_terms ) ) {

   $term_ids = implode( ',' , $post_terms );
   $terms = wp_list_categories( 'title_li=&style=none&echo=0&taxonomy=' . $taxonomy . '&include=' . $term_ids );
   $terms = rtrim( trim( str_replace( '<br />',  $separator, $terms ) ), $separator );

    // выводим категории записи
 echo  $terms;
}
?>

Совет: не используйте заглавные буквы в названии таксономии при её регистрации. Это в большинстве случаев приводит к проблемам.

24 июл. 2014 г. 14:03:33
Комментарии

Это вызывает ошибку синтаксиса: unexpected '>' на строке с &post_terms.

probablybest probablybest
24 июл. 2014 г. 14:16:52

Извините, вы правы насчет синтаксической ошибки. Я опубликовал это с телефона, и по какой-то причине сломался один символ угловой скобки. Исправил.

Pieter Goosen Pieter Goosen
24 июл. 2014 г. 18:56:37