Obter o primeiro termo da postagem

10

Como obtenho apenas o primeiro termo de um tipo de postagem personalizado.
Eu posso pegar 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 é bem-vinda

Sagive SEO
fonte

Respostas:

23

Não sei ao certo o que você quer dizer com taxonomia "primeira" ... mas,

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

retorna uma matriz de objetos de termo de taxonomia, portanto

$term = array_pop($terms);

Daria a você o primeiro termo na matriz. E depois:

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)

Stephen Harris
fonte
tentei isso .. obtendo um erro: Erro fatal detectável: o objeto da classe WP_Error não pôde ser convertido em string em /home/content/14/6469114/html/wp-content/themes/sagive/single-website.php on line 40
Sagive SEO
na linha 40: <? php $ terms = get_the_terms ($ post-> ID, 'sitecat'); array_pop (termos $); echo '<a href="'.get_term_link($term-> slug,' sitecat ').' "> '. $ term-> name.' </a> '; ?>
Sagive SEO
ok .. o erro estava do meu lado - e não a sua resposta;) muito obrigado companheiro
Sagive SEO
4

A partir do PHP 5.4, você pode desreferenciar diretamente uma matriz, para obter o primeiro termo, basta fazê-lo.

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

Se você precisar de uma propriedade específica ( digamos 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 observação, isso tem suas desvantagens, porque você obterá um WP_Errorobjeto 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 indefinida; portanto, use-a com cuidado.

Pieter Goosen
fonte
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);
}
Pankaj
fonte
11
O que "funcionou para você"? Nota: O break;que realmente interromperá sua declaração, unsetnunca será acionado e apenas o primeiro item será processado.
kaiser
unset( $term );deve ser após o seu foreachciclo, e não dentro it :-)
Pieter Goosen
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;
Lafif Astahdziq
fonte