Ottieni il primo post post


10

Come ottengo solo il primo termine di un tipo di post personalizzato.
Posso ottenere tutto - nessun problema. Questo è quello che sto usando per afferrarli tutti

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

Gradirei una risposta usando il mio codice ma ogni aiuto è il benvenuto

Risposte:


23

Non sono sicuro di cosa intendi per "prima" tassonomia ... ma,

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

restituisce una matrice di oggetti termine di tassonomia, quindi

$term = array_pop($terms);

Ti darebbe il primo termine nella matrice. E poi:

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

(Potresti voler includere alcune istruzioni if, nel caso in cui venga restituito un array vuoto o un errore (vedi is_wp_error)


ho appena provato questo .. ottenere un errore: Errore irreversibile irreversibile: l'oggetto della classe WP_Error non è stato convertito in stringa in /home/content/14/6469114/html/wp-content/themes/sagive/single-website.php on line 40
Sagive SEO

sulla riga 40: <? php $ terms = get_the_terms ($ post-> ID, 'sitecat'); array_pop ($ termini); echo '<a href="'.get_term_link($term-> slug,' sitecat ').' "> '. $ term-> name.' </a> '; ?>
Sagive SEO

ok .. l'errore era dalla mia parte - non la tua risposta;) grazie mille
amico

4

A partire da PHP 5.4, puoi dereferenziare direttamente un array, quindi per ottenere il primo termine, puoi semplicemente farlo.

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

Se hai bisogno di una proprietà specifica (ad esempio il nome del termine ) del primo termine, puoi procedere come segue

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

MODIFICARE

Solo una nota, questo ha i suoi inconvenienti perché otterrai un WP_Erroroggetto se la tassonomia non è valida. Inoltre, se l'array restituito è vuoto, riceverai anche un avviso di chiave dell'array non definito, quindi usalo con cura.


0

Ha funzionato per me. Porta solo la prima categoria come testo, senza ancora.

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

1
Cosa "ha funzionato per te"? Sidenote: break;interromperà davvero la tua affermazione, unsetnon verrà mai attivato e verrà elaborato solo il primo elemento.
Kaiser

unset( $term );dovrebbe essere dopo il tuo foreachciclo, e non al suo interno :-)
Pieter Goosen,

0

che ne dici di accedere direttamente alla chiave dell'oggetto?

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

così puoi accedere all'oggetto.

echo $first_term->name;
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.