Как получить get_the_term_list без ссылок в тегах заголовков архивного шаблона?

1 февр. 2011 г., 16:28:42
Просмотры: 38.8K
Голосов: 18

Какая функция отобразит пользовательские таксономии, связанные с записью, в виде текста?

В настоящее время я использую get_the_term_list, который отлично работает для отдельной страницы, но не так хорошо при использовании таксономии в теге заголовка permalink в archive-postype.php.

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

Однако @anu прав, я выяснил, что можно использовать PHP-функцию strip_tags для удаления тегов из возвращаемого значения.

$terms = get_the_term_list( $post->ID, 'tags' );
$terms = strip_tags( $terms );
1 февр. 2011 г. 21:18:40
Комментарии

Выглядит так просто и выполняет свою задачу. Есть ли какие-то недостатки при использовании этого?

Muhammad Asad Muhammad Asad
3 янв. 2017 г. 15:11:45

@Mohsin Один недостаток в том, что он удаляет все теги, а не только тег <a>. Однако вы можете предотвратить удаление нужных тегов, например так: $terms = strip_tags( $terms, '<li>' );

David David
6 дек. 2017 г. 10:20:52
1
18

Функция wp_get_object_terms() возвращает термины, связанные с объектом (например, с записью, страницей или произвольным типом записи) в виде текста (обычно в массиве).

Из страницы Кодекса для wp_get_object_terms()

$productcategories = wp_get_object_terms($post->ID, 'productcategories');

1 февр. 2011 г. 17:37:46
Комментарии

Имейте в виду, что результаты запроса не кэшируются, как в случае с get_the_terms(). Подробности смотрите на странице кодекса.

Dylan Dylan
8 сент. 2016 г. 07:25:22
1

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

Смотрите get_the_terms_list() и хук в Ресурсах для разработчиков.

$term_links = apply_filters( "term_links-{$taxonomy}", string[] $links )

Вы можете реализовать свой собственный фильтр.

1 февр. 2011 г. 16:50:11
Комментарии

Это именно тот хук, который я нашёл, изучая исходный код.

wittich wittich
2 февр. 2023 г. 09:57:29
0
$terms = wp_list_pluck( get_the_terms( get_the_ID(), 'your_taxonomy' ), 'name');

Здесь $terms является массивом, поэтому вы можете использовать цикл foreach.

foreach( $terms as $term ) {
  echo $term;
}
5 июл. 2019 г. 22:37:58
0

Мне нужно то же самое, и я попробовал решение Зака, которое отлично работает. Например, если вам нужно только название термина для использования в CSS ID или классе.

Одно замечание по поводу решения — функция названа неправильно, правильно будет "get_the_term_list".

Вот мой пример:

$terms = get_the_term_list( $post->ID, 'your_taxonomy_name' );
$terms = strip_tags( $terms );
17 янв. 2013 г. 13:10:13