Obtenez le premier terme de poste

10

Comment obtenir uniquement le premier terme d'un type de publication personnalisé.
Je peux tout obtenir - pas de problème. C'est ce que j'utilise pour les saisir tous

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

J'apprécierais une réponse en utilisant mon code mais toute aide est la bienvenue

Référencement Sagive
la source

Réponses:

23

Je ne sais pas ce que vous entendez par «première» taxonomie ... mais,

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

renvoie un tableau d'objets de termes de taxonomie, donc

$term = array_pop($terms);

Vous donnerait le premier terme du tableau. Et alors:

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

(Vous voudrez peut-être inclure certaines instructions if, dans le cas où un tableau vide ou une erreur est retournée (voir is_wp_error)

Stephen Harris
la source
viens d'essayer ceci. obtenir une erreur: erreur fatale détectable: l'objet de la classe WP_Error n'a pas pu être converti en chaîne dans /home/content/14/6469114/html/wp-content/themes/sagive/single-website.php en ligne 40
Sagive SEO
à la ligne 40: <? php $ terms = get_the_terms ($ post-> ID, 'sitecat'); array_pop ($ terms); echo '<a href="'.get_term_link($term-> slug,' sitecat ').' "> '. $ term-> name.' </a> '; ?>
Sagive SEO
ok .. l'erreur était de mon côté - pas votre réponse;) merci beaucoup
Sagive SEO
4

Depuis PHP 5.4, vous pouvez directement déréférencer un tableau, donc pour obtenir le premier terme, vous pouvez simplement le faire.

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

Si vous avez besoin d'une propriété spécifique ( dites le nom du terme ) du premier terme, vous pouvez effectuer les opérations suivantes

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

ÉDITER

Juste une note, cela a ses inconvénients car vous obtiendrez un WP_Errorobjet si la taxonomie n'est pas valide. De plus, si le tableau retourné est vide, vous obtiendrez également un avertissement de clé de tableau non défini, alors utilisez-le avec précaution.

Pieter Goosen
la source
0

Ça a marché pour moi. Il n'apporte que la première catégorie en tant que texte, pas d'ancrage.

$terms = get_the_terms( $post->ID , 'your_custom_taxonomy' ); 
foreach( $terms as $term ) { 
    print $term->name;
    break;
    unset($term);
}
Pankaj
la source
1
Qu'est-ce qui a "fonctionné pour vous"? Sidenote: Le break;arrêtera vraiment votre déclaration, le unsetne sera jamais déclenché et seul le 1er élément sera traité.
kaiser
unset( $term );devrait être après votre foreachboucle, et non à l' intérieur :-)
Pieter Goosen
0

que diriez-vous d'accéder directement à la clé de l'objet?

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

afin que vous puissiez accéder à l'objet.

echo $first_term->name;
Lafif Astahdziq
la source