Zdobądź pierwszy semestr

10

Jak uzyskać tylko pierwszy termin niestandardowego typu postu.
Mogę dostać wszystko - nie ma problemu. To, czego używam, aby złapać je wszystkie

<?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>

Byłbym wdzięczny za odpowiedź przy użyciu mojego kodu, ale każda pomoc jest mile widziana

Sagive SEO
źródło

Odpowiedzi:

23

Nie jestem pewien, co rozumiesz przez „pierwszą” taksonomię ... ale,

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

zwraca tablicę obiektów terminów taksonomii, więc

$term = array_pop($terms);

Dałby ci pierwszy termin w tablicy. I wtedy:

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

(Możesz dołączyć niektóre instrukcje if, na wypadek zwrócenia pustej tablicy lub błędu (patrz is_wp_error)

Stephen Harris
źródło
po prostu spróbowałem tego… pojawia się błąd: Chwytalny błąd krytyczny: Obiekt klasy WP_Error nie mógł zostać przekonwertowany na ciąg znaków w /home/content/14/6469114/html/wp-content/themes/sagive/single-website.php on line 40
Sagive SEO
on line 40: <? php $ terms = get_the_terms ($ post-> ID, 'sitecat'); array_pop ($ terminy); echo '<a href="'.get_term_link($term-> ślimak,' sitecat ').' "> '. $ term-> name.' </a> '; ?>
Sagive SEO
ok .. błąd był po mojej stronie - nie twoja odpowiedź;) wielkie dzięki kolego
Sagive SEO
5

Od wersji PHP 5.4 możesz bezpośrednio wyrejestrować tablicę, więc aby uzyskać pierwszy termin, możesz to zrobić po prostu.

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

Jeśli potrzebujesz określonej właściwości ( powiedzmy nazwę terminu ) pierwszego terminu, możesz wykonać następujące czynności

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

EDYTOWAĆ

Tylko uwaga, ma to swoje wady, ponieważ otrzymasz WP_Errorprzedmiot, jeśli taksonomia jest nieprawidłowa. Ponadto, jeśli zwrócona tablica jest pusta, otrzymasz również niezdefiniowane ostrzeżenie o kluczu tablicy, więc używaj jej ostrożnie.

Pieter Goosen
źródło
0

To zadziałało dla mnie. Przynosi tylko pierwszą kategorię jako tekst, bez kotwicy.

$terms = get_the_terms( $post->ID , 'your_custom_taxonomy' ); 
foreach( $terms as $term ) { 
    print $term->name;
    break;
    unset($term);
}
Pankaj
źródło
1
Co „pracowało dla ciebie”? Sidenote: To break;naprawdę zatrzyma twoją instrukcję, unsetnigdy nie zostanie uruchomione i przetworzony zostanie tylko 1. element.
kaiser
unset( $term );powinno być po Twojej foreachpętli, a nie w jej wnętrzu :-)
Pieter Goosen
0

co powiesz na bezpośredni dostęp do klucza obiektu?

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

abyś mógł uzyskać dostęp do obiektu.

echo $first_term->name;
Lafif Astahdziq
źródło