Obtenga el primer término del post

10

¿Cómo obtengo solo el primer término de un tipo de publicación personalizado?
Puedo obtener todo, no hay problema. Esto es lo que estoy usando para agarrarlos a todos

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

Agradecería una respuesta usando mi código, pero cualquier ayuda es bienvenida

SEO sagivo
fuente

Respuestas:

23

No estoy seguro de qué quieres decir con "primera" taxonomía ... pero,

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

devuelve una matriz de objetos de término de taxonomía, por lo que

$term = array_pop($terms);

Te daría el primer término en la matriz. Y entonces:

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

(Es posible que desee incluir algunas declaraciones if, en caso de que se devuelva una matriz vacía o un error (consulte is_wp_error)

Stephen Harris
fuente
acabo de intentar esto ... obteniendo un error: Error fatal capturable: El objeto de la clase WP_Error no se pudo convertir a cadena en /home/content/14/6469114/html/wp-content/themes/sagive/single-website.php en línea 40
Sagive SEO
en la línea 40: <? php $ terms = get_the_terms ($ post-> ID, 'sitecat'); array_pop ($ términos); echo '<a href="'.get_term_link($term-> slug,' sitecat ').' "> '. $ term-> name.' </a> '; ?>
Sagive SEO
ok .. el error estuvo de mi lado - no es tu respuesta;) muchas gracias amigo
Sagive SEO
4

A partir de PHP 5.4, puede desreferenciar directamente una matriz, por lo que para obtener el primer término, simplemente puede hacerlo.

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

Si necesita una propiedad específica ( diga el nombre del término ) del primer término, puede hacer lo siguiente

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

EDITAR

Solo una nota, esto tiene sus inconvenientes porque obtendrá un WP_Errorobjeto si la taxonomía no es válida. Además, si la matriz devuelta está vacía, también recibirá una advertencia de clave de matriz indefinida, así que úsela con cuidado.

Pieter Goosen
fuente
0

Funcionó para mi. Solo trae la primera categoría como texto, sin ancla.

$terms = get_the_terms( $post->ID , 'your_custom_taxonomy' ); 
foreach( $terms as $term ) { 
    print $term->name;
    break;
    unset($term);
}
Pankaj
fuente
1
¿Qué "funcionó para ti"? Nota al margen: break;Realmente detendrá su declaración, unsetnunca se activará y solo se procesará el primer elemento.
kaiser
unset( $term );debería estar detrás de tu foreachbucle, y no dentro de él :-)
Pieter Goosen
0

¿qué tal acceder directamente a la clave del objeto?

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

para que pueda acceder al objeto.

echo $first_term->name;
Lafif Astahdziq
fuente