get_the_term_list без ссылок в 3.1


13

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

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

Ответы:


15

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

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

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


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

22

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

$terms = get_the_term_list( $post->ID, 'tags' );
$terms = strip_tags( $terms );

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

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

2

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

Функция get_the_terms_list () реализована здесь: http://core.trac.wordpress.org/browser/tags/3.0.4/wp-includes/category-template.php#L948 .

 $term_links = apply_filters( "term_links-$taxonomy", $term_links );

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


0

Мне нужно то же самое и попробовал решение Zack, которое прекрасно работает. Например, если вам нужен только термин, чтобы вставить идентификатор или класс CSS. Только одна аннотация о решении, функция называется плохо, правильно называется "get_the_term_list".

Я показываю мой пример:

$terms = get_the_term_list( $post->ID, 'your_taxonomy_name' );
$terms = strip_tags( $terms );

0
$terms = wp_list_pluck( get_the_terms( get_the_ID(), 'your_taxonomy' ), 'name');

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

foreach( $terms as $term ) {
  echo $term;
}
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.