Отримати перший термін після публікації


10

Як отримати лише перший термін користувацького типу публікації.
Я можу все отримати - немає проблем. Це те, що я використовую, щоб захопити їх усіх

<?php foreach ($terms as $term) {echo '<a href="'.get_term_link($term->slug, 'sitecat').'">'.$term->name.'</a>,';} ?> >> <a href="<?php the_permalink(); ?>"><?php the_title('', ''); ?></a></h2></span>

Буду вдячний за відповідь за допомогою мого коду, але будь-яка допомога вітається

Відповіді:


23

Я не впевнений, що ви маєте на увазі під "першою" систематикою ... але,

$terms = get_the_terms( $post->ID, 'mytaxonomy' );

повертає масив об'єктів термінів таксономії, так

$term = array_pop($terms);

Дав би вам перший термін у масиві. І потім:

echo '<a href="'.get_term_link($term->slug, 'mytaxonomy').'">'.$term->name.'</a>,'

(Ви можете включити деякі, якщо заяви, у разі повернення порожнього масиву або помилки (див. is_wp_error)


просто спробував це .. отримання помилки: Фатальна помилка, що піддається запису: Об'єкт класу WP_Error не вдалося перетворити на рядок у /home/content/14/6469114/html/wp-content/themes/sagive/single-website.php on line 40
Пробачте SEO

у рядку 40: <? php $ terms = get_the_terms ($ post-> ID, 'sitecat'); array_pop ($ терміни); echo '<a href="'.get_term_link($term-> slug,' sitecat ').' "> '. $ term-> name.' </a> '; ?>
Пробачте SEO

ок .. помилка була на моєму боці - не ваша відповідь;) спасибі
великому

5

Станом на PHP 5.4, ви можете безпосередньо знеструмлювати масив, тому, щоб отримати перший термін, ви можете просто зробити.

$first_term = get_the_terms( $post->ID, 'TAXONOMY_NAME' )[0];
var_dump( $first_term );

Якщо вам потрібна певна властивість ( скажіть назву терміна ) першого терміну, ви можете зробити наступне

$first_term_name = get_the_terms( $post->ID, 'TAXONOMY_NAME' )[0]->name;
var_dump( $first_term_name );

EDIT

Лише зауважте, це має свої зворотні риси, оскільки ви отримаєте WP_Errorоб'єкт, якщо таксономія недійсна. Крім того, якщо повернутий масив порожній, ви також отримаєте не визначене попередження ключа масиву, тому використовуйте це з обережністю.


0

Це працювало для мене. Він приносить лише першу категорію як текст, не якір.

$terms = get_the_terms( $post->ID , 'your_custom_taxonomy' ); 
foreach( $terms as $term ) { 
    print $term->name;
    break;
    unset($term);
}

1
Що "працювало для вас"? Sidenote: Показник break;дійсно зупинить вашу заяву, unsetніколи не буде ініційовано, і лише 1-й елемент буде оброблений.
кайзер

unset( $term );має бути після вашого foreachциклу, а не всередині нього :-)
Пітер Гусен

0

як щодо безпосереднього доступу до ключа об’єкта?

$terms = get_the_terms( $post->ID, 'sitecat' );
$first_term = $terms[0];

тож ви можете отримати доступ до об’єкта.

echo $first_term->name;
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.