get_terms()

get_terms()

Essa função é mais completa do que get_categories(). Ela permite receber qualquer tipo de taxonomia do post: categorias, tags ou categorias personalizadas.

Uma função que permite obter (e exibir no site) elementos de taxonomias (categorias, tags ou taxonomias personalizadas) e informações sobre eles. Se você precisar obter o elemento de taxonomia atual, use as funções get_query_var() (com o valor do parâmetro igual a term – dessa forma, você obtém o rótulo do elemento de taxonomia atual) e get_term_by() (com o valor do primeiro parâmetro igual a lesma).

get_terms( $args = array(), $deprecated = '' )

De padrão, a função retorno a array WP_Term, que contem o seguinte

Se o parâmetro de campos não for alterado, a função retornará uma matriz de objetos WP_Term, cada um contendo as seguintes informações sobre o elemento de taxonomia.

term_id – ID do elemento de categoria/tag/taxonomia nome nome lesma – rótulo

term_group – valor term_group do banco de dados (sem uso especial ainda, principalmente em plugins)

term_taxonomy_id – ID de taxonomia

taxonomia – o nome da taxonomia

description – descrição do elemento (pode ser preenchido no painel de administração ao criar e editar)

parent – ID do elemento pai

count – o número de entradas

order – número do pedido para classificação manual

Exemplos de uso da função get_terms()

$categories = get_terms( array( 'taxonomy' => 'category' ) );
print_r( $categories );
/*
Resultado:
Array ( [0] => stdClass Object ( [term_id] => 1 [name] => Posts [slug] => notes [term_group] => 0 [menu_order] => 0 [term_taxonomy_id] => 1 [taxonomy] => category [description] => [parent] => 0 [count] => 7 ) [1] => stdClass Object ( [term_id] => 4 [name] => Notícias [slug] => news [term_group] => 0 [menu_order] => 0 [term_taxonomy_id] => 4 [taxonomy] => category [description] => [parent] => 0 [count] => 2 ) [2] => stdClass Object ( [term_id] => 11 [name] => Novidades [slug] => updates [term_group] => 0 [menu_order] => 0 [term_taxonomy_id] => 11 [taxonomy] => category [description] => [parent] => 4 [count] => 1 ) )
*/
$categories = get_terms( array( 'taxonomy' => 'category', 'fields' => 'ids' ) );
print_r( $categories );
/*
Resultado:
Array ( [0] => 1 [1] => 4 [2] => 11 )
*/
$categories = get_terms( array( 'taxonomy' => 'category', 'fields' => 'names' ) );
print_r( $categories );
/*
Resultado:
Array ( [0] => Новости [1] => Заметки )
*/

Como mostrar somente algumas certas categorias

$args = array( 
	'taxonomy' => 'category', 
	'include' => array( 1, 4 ) 
);
 
$categories = get_terms( $args );

Além do include temos outros parâmetors. Quais?

um ou mais números referentes os identificadores de categorias que não devem ser exibidas

exclude_tree

Este parâmetro vai excluir as categorias e os filhos dessas categorias também

orderby

vamos ordenar as categorias por

id — padrão

parent – pelo ID da categoria pai

count – pela quantidade dos posts dentro da categoria

name – pelo nome

slug – pelo slug

term_group – pelo term_group na tabela wp_terms dentro do banco de dadosi

include – já mostrei o exemplo em cima

meta_velue e meta_value_num – pelo valor do campo personalizado

none – não ordenar

order

ASC — classifica do valor mais baixo para o valor mais alto

DESC — classifica do valor mais alto para o valor mais baixo

hide_empty

true – padrão

false

O que é name__like e como usá-lo?

$tags = get_terms( array( 'taxonomy' => 'post_tag', 'name__like' => 'Sol' ) );
foreach( $tags as $tag ){
	echo $tag->name . ' ';
}

Ok, agora vamos ver um exemplo de uso. Vamos receber 3 categorias com maior quantidade de posts

$args = array(
	'taxonomy' => 'category',
	'number' => 3,
	'orderby' => 'count',
	'order' => 'DESC',
);
$terms = get_terms( $args );
if( $terms ){
	echo '<ul>';
	foreach( $terms as $term ) {
		echo '<li>' . $term->name . ' (' . $term->count . ')</li>';
	}
	echo '</ul>';
}
Posted on novembro 15, 2022