Holen Sie sich das erste Post-Semester

10

Wie erhalte ich nur den ersten Begriff eines benutzerdefinierten Beitragstyps?
Ich kann alles bekommen - kein Problem. Das, was ich benutze, um sie alle zu packen

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

Würde mich über eine Antwort mit meinem Code freuen, aber jede Hilfe ist sehr willkommen

Sagive SEO
quelle

Antworten:

23

Ich bin mir nicht sicher, was Sie unter "erster" Taxonomie verstehen ... aber,

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

Gibt also ein Array von Taxonomie-Termobjekten zurück

$term = array_pop($terms);

Würde Ihnen den ersten Term im Array geben. Und dann:

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

(Möglicherweise möchten Sie einige if-Anweisungen einfügen, falls ein leeres Array oder ein Fehler zurückgegeben wird (siehe is_wp_error).

Stephen Harris
quelle
Ich habe es gerade versucht. Es wurde ein Fehler angezeigt: Auffangbarer schwerwiegender Fehler: Objekt der Klasse WP_Error konnte nicht in eine Zeichenfolge in /home/content/14/6469114/html/wp-content/themes/sagive/single-website.php online konvertiert werden 40
Sagive SEO
in Zeile 40: <? php $ term = get_the_terms ($ post-> ID, 'sitecat'); array_pop ($ Terms); echo '<a href="'.get_term_link($term-> slug,' sitecat ').' "> '. $ term-> name.' </a> '; ?>
Sagive SEO
ok .. der Fehler war auf meiner Seite - nicht deine Antwort;) vielen Dank Kumpel
Sagive SEO
4

Ab PHP 5.4 können Sie ein Array direkt dereferenzieren. Um den ersten Term zu erhalten, können Sie dies einfach tun.

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

Wenn Sie eine bestimmte Eigenschaft (z. B. den Begriffsnamen ) des ersten Begriffs benötigen, können Sie Folgendes tun

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

BEARBEITEN

Nur eine Anmerkung, dies hat seine Nachteile, da Sie ein WP_ErrorObjekt erhalten, wenn die Taxonomie ungültig ist. Wenn das zurückgegebene Array leer ist, wird auch eine undefinierte Array-Schlüsselwarnung angezeigt. Gehen Sie daher vorsichtig damit um.

Pieter Goosen
quelle
0

Es hat bei mir funktioniert. Es bringt nur die erste Kategorie als Text, keinen Anker.

$terms = get_the_terms( $post->ID , 'your_custom_taxonomy' ); 
foreach( $terms as $term ) { 
    print $term->name;
    break;
    unset($term);
}
Pankaj
quelle
1
Was "hat für dich funktioniert"? Nebenbemerkung: Das break;wird Ihre Aussage wirklich stoppen, das unsetwird niemals ausgelöst und nur das 1. Element wird verarbeitet.
Kaiser
unset( $term );sollte nach deiner foreachSchleife sein und nicht drin :-)
Pieter Goosen
0

Wie wäre es mit direktem Zugriff auf den Objektschlüssel?

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

So können Sie auf das Objekt zugreifen.

echo $first_term->name;
Lafif Astahdziq
quelle