Obter o primeiro termo post

8

Como faço para obter apenas o primeiro termo de um tipo de postagem personalizado.
Eu posso conseguir tudo - não há problema. Isso que eu estou usando para pegar todos eles

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

Gostaria de receber uma resposta usando meu código, mas qualquer ajuda é muito bem-vinda

    
por Sagive SEO 10.03.2012 / 02:13

4 respostas

22

Não tenho certeza do que você quer dizer com "primeira" taxonomia ... mas,

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

retorna uma matriz de objetos de termo de taxonomia, então

$term = array_pop($terms);

Daria o primeiro termo na matriz. E então:

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

(Você pode incluir algumas instruções if, no caso de uma matriz ou erro vazio ser retornado (consulte is_wp_error )

    
por Stephen Harris 10.03.2012 / 03:05
3

A partir do PHP 5.4, você pode diretamente desreferenciar um array, para obter o primeiro prazo, você pode simplesmente fazer.

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

Se você precisar de uma propriedade específica ( diga o nome do termo ) do primeiro termo, poderá fazer o seguinte

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

EDITAR

Apenas uma nota, isso tem seus inconvenientes porque você obterá um objeto WP_Error se a taxonomia for inválida. Além disso, se a matriz retornada estiver vazia, você também receberá um aviso de chave de matriz indefinido, portanto, use isso com cuidado.

    
por Pieter Goosen 28.07.2015 / 10:16
0

Funcionou para mim. Traz apenas a primeira categoria como texto, sem âncora.

$terms = get_the_terms( $post->ID , 'your_custom_taxonomy' ); 
foreach( $terms as $term ) { 
    print $term->name;
    break;
    unset($term);
}
    
por Pankaj 04.03.2014 / 13:23
0

que tal acessar diretamente a chave do objeto?

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

para que você possa acessar o objeto.

echo $first_term->name;
    
por Lafif Astahdziq 28.07.2015 / 10:06