Подсчет количества терминов таксономии для каждого поста
Подскажите, пожалуйста, у вас на сайте не нашел.
Имеется тип записи book, таксономия avtory.
У поста может быть как один, так и несколько авторов, а иногда и до десятка...
Как сделать в проверку в цикле, если у поста один автор - то выводим его имя, а если несколько, то имя первого и "и др.", а то весь дизайн летит из-за этого.
Большое спасибо!
В простом случае функция get_the_terms(), получающая все элементы таксономии, привязанные к посту, возвращает результат в виде массива. Поэтому с задачей подсчета количества справится PHP-функция count().
$terms = get_the_terms( $post->ID, 'avtory' ); if ( count( $terms ) == 1 ) { echo $terms[0]; } else { echo $terms[0] . " и др."; }Функция не работает((
Мне нужно её как-то вписать вот сюда
<?php $array = array();$cur_terms = get_the_terms( $post->ID, 'avtory'); foreach( $cur_terms as $cur_term ){ $array[] = $cur_term->name; } $comma_separated = implode(", ", $array); echo $comma_separated;?>функция вернет false, если не задана переменная $post (т.е. функция вызывается вне основного цикла) или нет привязанных элементов таксономии
ID записи можно получить функцией get_the_ID()
Извините, пожалуйста, но я так и не понял, как это сделать?
если функция вызывается вне основного цикла WordPress, то переменную, указывающую на ID нужной записи, можно получить функцией get_the_ID()
т.е. вызов функции get_the_terms() будет выглядеть так:
для описанного выше примера (формирования строки из имен элементов, разделенных запятой) лучше подойдет функция wp_get_post_terms, поскольку в ней есть возможность указать формат получения результатов.
$post_id = get_the_ID(); $terms = wp_get_post_terms( $post_id, 'avtory', array('fields' => 'names') ); /* в массиве параметров можно указать - какие поля объекта включать в возвращаемый массив. В данном случае указано, чтобы в массив включались только названия элементов. */ echo implode(', ', $terms);