Intereting Posts
Показать последние сообщения Гладкая прокрутка с одной страницы на другую? Добавить пользовательский тип элемента меню Странное поведение с добавлением _ {$ meta_type} _metadata | Фильтр add_post_metadata Запретить wp_insert_user создавать дубликаты пользователей Загрузка файла bbPress CSS только в каталог форума Возможно ли установить лимит редактирования типа публикации в файлах темы? Удаление нижнего колонтитула WordPress без доступа к PHP-коду? meta_query в WP_query с отношением «OR» не принимает более двух массивов для сравнения Добавляет ли WordPress свои собственные классы в навигационные меню? Избранные изображения исчезают после экспорта / импорта БД? Несколько плагинов, использующих те же проблемы класса OAuth Получение номера версии последней версии WordPress Изменить дату публикации публикации, чтобы опубликовать измененную дату во всех местах Добавить пользовательские результаты поиска в основной поиск WP

Получить имя термина без цикла foreach

У меня в настоящее время есть следующее:

<?php $terms = wp_get_post_terms( $post->ID, 'artist-genre'); foreach($terms as $term) : ?> <li> <?php echo $term->name; ?> </li> <?php endforeach;?> 

Просто, чтобы указать имя на странице пользовательского типа сообщений, называемой artwork .

Он работает, но я чувствую, что выполнение цикла foreach для одной вещи немного переборщило.

Есть ли другой способ сделать это по-другому без использования foreach или это лучший способ?

Как насчет использования :

 echo get_the_term_list( $post->ID, 'artist-genre', '<li>', ',</li><li>', '</li>' ); 

вместо этого, чтобы сгенерировать список HTML?

Или просто :

 the_terms( $post->ID, 'artist-genre', '<li>', ',</li><li>', '</li>' ); 

это оболочка для get_the_term_list() .

Также обратите внимание, что в вашем фрагменте кода отсутствует is_wp_error() , поскольку wp_get_post_terms() может возвращать объект WP_Error для неизвестной таксономии. Но функция the_terms позаботится об этом и возвращает false в этом случае.

Если вы только после имени термина в своем коде, вы можете добавить

 array( 'fields' => 'names' ) 

Или для PHP 5.4+

 ['fields' => 'names'] 

как третий параметр для wp_get_post_terms . Это просто вернет имена терминов, прикрепленных к сообщению. Затем вы можете получить и отобразить первое имя

 echo $terms[0]]; 

Как уже упоминалось @birgire, вам нужно будет проверить, не возвращаются ли $terms term и что есть фактически возвращенные значения. Несоблюдение этого приведет к ошибке, когда $terms возвратит ошибку возврата пустым списком