get_the_term_list без посилань у 3.1


13

Яка функція відображатиме власні таксономії, пов’язані з публікацією як текст?

В даний час я використовую get_the_term_list, який чудово працює для окремої сторінки, але не так сильно, коли використовується таксономія в тезі архів-postype.php постійної посилання.

Відповіді:


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

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

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 );

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


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

Тут $ terms - це масив, тому ви можете використовувати цикл foreach.

foreach( $terms as $term ) {
  echo $term;
}

0

Мені потрібно те саме і випробуване рішення Zack, яке чудово працює. Наприклад, якщо вам потрібно лише термін, який потрібно ввести в css id або class. Лише одне повідомлення про рішення, функція погано називається, правильно "get_the_term_list".

Я показую свій приклад:

$terms = get_the_term_list( $post->ID, 'your_taxonomy_name' );
$terms = strip_tags( $terms );
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.