A tag wp_list_categories é uma tag muito usada nos temas para wordpress, mesmo depois de ter sido introduzida a opção dos menus personalizados. Neste artigo vamos explorar a tag wp_list_categories e mostrar o que você pode fazer com ela.

Normalmente esta tag é usada na sua forma mais simples, ou seja:

wp_list_categories();

Para aproveitar todas as capacidades desta tag temos de usar argumentos. Para isso começamos por definir uma variável para depois aplicarmos na list_categories, vamos chamar a esta variável "argumentos" e esta variável vai ter uma array associativa dentro dela pois queremos aplicar mais do que um valor à variável e não vamos chamar os conteúdos da array com o ID de cada elemento mas sim pelo nome, começando:

$argumentos=array(
//aqui adicionaremos os argumentos
);
wp_list_categories($argumentos);

Não mostrar o titulo na lista

Esta é um dos usos mais comuns para nós utilizarmos os argumentos dentro desta tag e tudo o que temos que fazer é:

$argumentos=array(
'title_li'=> __( '//aqui podem adicionarem o que desejarem que esteja no titulo da lista' ),
);

O que nós estamos a fazer neste pedaço de código em termos de PHP é apenas chamar a chave 'title_li' e estamos a dar-lhe o valor que desejamos, neste caso retirar o que vem por defeito no wordpress.

Listar as categorias por ordem descendente

Por defeito o wordpress coloca as categorias ordenadas por nome e de uma forma ascendente, mas se quisermos contrariar isto e revelar as categorias de uma forma descendente, aplicamos este valor á nossa variável:

$argumentos=array(
'order'=>'DESC',
);

Esta chave('order') só aceita dois valores: DESC para revelar as categorias de uma forma descendente e ASC que vem por defeito e as revela numa forma ascendente.

Ordenar as categorias por ID

Todas as categorias que criamos no website têm um nome e a essa categorias também está associado um ID, se não sabem ver qual é este ID vejam o tutorial do Celso que explica como descobrir o ID de uma categoria.

Depois de sabermos isto, e de experimentamos notamos que o list_categories não ordena as categorias por ID mas sim por nome como previamente dito, mas se quisermos ordenar estas por ID também o podemos fazer:

$argumentos=array(
'orderby'=> 'ID',
);

Assim as nossas categorias estarão na nossa página ordenadas pelo ID e não pelo nome.

Não esconder categorias vazias

Muitos de vocês já devem ter reparado que se criarmos uma categoria e não introduzimos nada nesta ela não aparecerá na página se não mudarmos a definição que vêm por defeito com o wordpress que é não mostrar as categorias que estejam vazias na página, se quisermos mudar esta definição e mostrar na nossa página as categorias que estejam vazias usamos:

$argumentos=array(
'hide_empty'=> 0,
);

Esta chave só aceita valores booleanos como verdadeiro e falso, e é para isso que serve o 0, no PHP o 0 é falso e o 1 verdadeiro, este ultimo é o que vem por defeito com o wordpress tornando hide empty verdadeiro e escondendo todas as categorias que estejam vazias e colocando o 0 revertemos isso.

Mostrar apenas categorias que são filhas de uma categoria

Por defeito o wordpress mostra todas as categorias que criou exceto as que estão vazias, mas se tivermos uma página que contenha o artigos e outra que contenha vídeos e nestas duas páginas queremos ter sidebars diferentes, e que estas só mostrem as categorias que são filhas da categoria-mãe artigos, assumindo que o ID dessa categoria é 6 usamos:

$argumentos=array(
'child_of'=> 6,
);

Com este pedaço de código dizemos ao wordpress que na chave child_of só quero que ele mostre as categorias que são filhas da categoria que têm o ID de 6.

Excluir categorias

Caso tenham por exemplo categorias que contenham artigos premium no vosso website e queiram esconder estas categorias só permitindo quem tem conta premium ver também o podem fazer utilizando o chave exclude:

$argumentos=array(
'exclude'=> 5,
);

Com este código o wordpress sabe que quando listar as categorias na página vai ter que excluir a que tem o ID de 5 dessa lista pois esta foi a categoria especificada na chave exclude.
Se quiserem excluir mais que uma categoria só têm que separar os ID's com virgulas:

$argumentos=array(
'exclude'=> 5,4,7,
);

Como podem ver no final têm que colocar a virgula na mesma para o PHP não dar um erro.

Usando tudo Junto e aplicando ao list_categories

<?php $argumentos=array( 'exclude'=--> 5,4,7,
'title_li'=> __( '//aqui podem adicionarem o que desejarem que esteja no titulo da lista' ),
'order'=>'DESC',
'orderby'=> 'ID',
'hide_empty'=> 0,
'child_of'=> 7,
);
wp_list_categories($argumentos); ?>

Como podem ver esta tag do wordpress normalmente não é muito utilizada com estes argumentos e pode ser muito mais enriquecida e moldada com eles. Recomendamos também uma visita ao codex do wordpress para ler a documentação oficial desta tag.

Espero que este artigo seja útil e se tiverem alguma dúvida deixem um comentário 🙂