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

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)


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.


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);
}

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;
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.