Modelos de Temas: Taxonomy.php

Modelos de Temas: Taxonomy.php

Este modelo de temas é conhecido como taxonomy.php, e como o nome já nos diz, é um modelo de template do próprio WordPress, que é usado no seu tema para carregar e exibir suas taxonomias personalizadas.

Antes de colocarmos a mão na massa, você precisa entender primeiro o que são taxonomias no mundo do WordPress.

O que são taxonomias?

Taxonomias são uma alternativa que o WordPress nos disponibiliza para organizar e classificar nossos conteúdos.

Diferente das tags e categorias que também servem para organizar o conteúdo, as taxonomias funcionam de forma um pouco diferente, sendo categorizadas como um nível acima.

O WordPress possui dois tipos principais de taxonomias padrão: categorias e tags.

E isso quer dizer que você também pode criar um novo tipo de agrupamento do mesmo nível das categorias e tags, legal não acha?

Criar taxonomias personalizadas é útil quando você precisa de uma maneira de organizar o conteúdo que não se encaixa bem nas categorias padrão do WordPress.

Um exemplo disso, é quando você possui um site de receitas, e precisa criar uma taxonomia personalizada chamada "Ingredientes".

Criando taxonomias

No ambito do WordPress é possível criar taxonomias de duas maneiras diferentes:

  • Diretamente no Painel Administrativo do WordPress ou,
  • Dentro do functions.php do seu tema.

Criando taxonomias personalizadas pelo painel do wordpress

De forma padrão, não é possível criar taxonomias personalizadas da mesma forma como criamos novas categorias ou novas tags.

Para fazer isso, você vai precisar da ajuda de um plugin específico, ou quem sabe, fazer isso diretamente no functions.php do seu tema.

Então, se você quer criar taxonomias no seu painel sem a necessidade de um plugin, recomendo pular para a seção de Criando taxonomias personalizadas no functions.php do seu tema.

O plugin que iremos usar neste exemplo, será o Custom Post Type UI.

1) Instale e ative o plugin na sua instância do WordPress:

2) No menu esquerdo, clique em CPT UI > Taxonomias/Adicionar Taxonomias:

Slug da taxonomia: Insira o nome da sua taxonomia personalizada em formato de URL amigável (sem acentos, espaços ou caracteres especiais, - está permitido).

Rótulo no plural: Insira o nome da sua taxonomia no plural. Será inserido no menu de Posts ao lado das outras taxonomias como Categorias e Tags.

Rótulo no singular:  Insira o nome da sua taxonomia no singular. Será inserido no menu de Posts ao lado das outras taxonomias como Categorias e Tags quando for necessário.  

Anexar ao tipo de post: Dependendo das opções que você escolher, um bloco com a taxonomia personalizada, será criado enquanto você estiver editando um post, página ou mídia.

No meu caso, eu criei minha taxonomia com as seguintes configurações:

Não se esqueça de clicar no botão [Adicionar Taxonomia] para criar o seu novo agrupamento.

Na aba de Posts uma nova taxonomia será criada:

Ela aparecerá também na aba de Páginas e Mídia.

Por fim, basta que você adicione elementos a essa taxonomia que você acabou de criar.

Tenha em mente que essa opção também se encontra disponível ao editar um Post ou uma Página:

Lembrando que você precisa adicionar novos "ingredientes" separados por vírgula, ok?

Criando taxonomias personalizadas no functions.php do seu tema

Caso você queria criar taxonomias sem a necessidade de instalar um plugin personalizado, você pode fazer isso dentro do seu próprio tema, modificando o arquivo functions.php da seguinte forma:

// Função de registro da taxonomia
function registrar_taxonomia_ingrediente(){

 // Rótulos da Taxonomia
 $labels = array(
 'name' => _x('Ingredientes', 'taxonomy general name'),
 'singular_name' => _x('Ingrediente', 'taxonomy singular name'),
 'search_items' => __('Procurar Ingredientes'),
 'all_items' => __('Todas os Ingredientes'),
 'parent_item' => __('Taxonomia Pai'),
 'parent_item_colon' => __('Taxonomia Pai:'),
 'edit_item' => __('Editar Ingredientes'),
 'update_item' => __('Atualizar Ingrediente'),
 'add_new_item' => __('Adicionar Ingrediente'),
 'new_item_name' => __('Novo Nome do Ingredientes'),
 'menu_name' => __('Ingredientes'),
 );

 // Argumentos da Taxonomia
 $args = array(
 'hierarchical' => true, 
 'labels' => $labels,
 'show_ui' => true,
 'show_admin_column' => true,
 'query_var' => true,
 'rewrite' => array('slug' => 'ingrediente'),
 );

 // Registrar a taxonomia
 register_taxonomy('ingrediente', array('post', 'page'), $args);
}

// Ação de registro da taxonomia
add_action('init', 'registrar_taxonomia_ingrediente');

Vamos entender agora, o que cada código faz:

registrar_taxonomia_ingrediente(): Está será a função responsável por cadastrar a nossa taxonomia personalizada.

$labels: Para cadastrar uma nova taxonomia no painel do wordpress, precisamos definir uma variável chamada $labels, que por sua vez irá armazenar uma série de configurações dentro de um array.

'name' (Nome Geral da Taxonomia): Nome geral da sua taxonomia. Geralmente, é usado em contextos onde o nome completo da taxonomia é necessário. 

'singular_name' (Nome Singular da Taxonomia): Nome singular da sua taxonomia, usado quando se refere a um único item da taxonomia.

'search_items' (Texto para Pesquisar Itens): Texto que é exibido quando um usuário está procurando itens dessa taxonomia.

'all_items' (Texto para Todos os Itens): Texto que é exibido quando um usuário visualiza todos os itens dessa taxonomia.

'parent_item' (Texto para Item Pai): Se a sua taxonomia for hierárquica, esse texto é exibido para se referir a um item pai.

'parent_item_colon' (Texto para Item Pai com Dois Pontos): Similar ao 'parent_item', mas com dois pontos adicionados. Pode ser usado para indicar uma relação pai/filho. 

'edit_item' (Texto para Editar Item): Texto que é exibido quando um usuário está editando um item dessa taxonomia.

'update_item' (Texto para Atualizar Item): Exibido ao atualizar um item da taxonomia.

'add_new_item' (Texto para Adicionar Novo Item): Exibido ao adicionar um novo item à taxonomia. No exemplo, "Adicionar Nova Taxonomia Personalizada".

'new_item_name' (Texto para Novo Nome do Item): Texto exibido quando um novo nome é atribuído a um item.

'menu_name' (Nome do Menu no Painel de Controle): Este é o nome da taxonomia que aparecerá no menu do painel de controle do WordPress.

$args: Para cadastrar as taxonomias também temos que configurar os argumentos da mesma, serão eles que informarão informações importantes, como por exemplo: o slug, se será hierárquico?, Aparecerá no painel? e entre outros....

'hierarchical' (Hierárquico): Este parâmetro determina se a taxonomia será hierárquica ou não.

Se definido como true, a taxonomia será semelhante às categorias, permitindo uma estrutura hierárquica com pais e filhos.

Se definido como false, será semelhante às tags, não permitindo hierarquia. 

'labels' (Rótulos): Este parâmetro aceita um array de rótulos (labels) que você definiu anteriormente, com o objetivo de personalizar a aparência da taxonomia no painel de administrativo.

'show_ui' (Mostrar na Interface do Usuário): Este parâmetro controla se a taxonomia será mostrada na interface do usuário. Se definido como true, a taxonomia será exibida no painel de administração.

'show_admin_column' (Mostrar na Coluna do Admin): Se definido como true, uma coluna será exibida na tela de edição de posts no painel de administração, mostrando os termos da taxonomia associados a cada post.

'query_var' (Variável de Consulta): Se definido como true, a taxonomia terá uma variável de consulta associada a ela. Isso permite que você use URLs como seusite.com/taxonomia-customizada/termo.

 'show_in_media': Se definida como true, a sua taxonomia também aparecerá no menu de mídia.

'rewrite' (Reescrita de URL): Este parâmetro aceita um array que define a reescrita da URL para a taxonomia.

No exemplo, é definido um slug para a URL da taxonomia, o que significa que os termos da taxonomia aparecerão em URLs como seusite.com/taxonomia-customizada/termo. Você pode ajustar isso conforme necessário.

Por fim nós temos a função register_taxonomy(), que é usada para registrar a taxonomia na sua instância do WordPress, onde conta com 3 parâmetros principais:

'ingrediente': Representa o nome da taxonomia. Ele é exclusivo no contexto do WordPress, e deve conter apenas caracteres alfanuméricos e sublinhados.

array('post', 'page'): Especifica os tipos de postagem aos quais a taxonomia estará associada. No caso estará associada aos posts e as páginas.

$args: São os argumentos que definimos logo acima.

Por fim nós temos a função add_action() que realmente adiciona a taxonomia personalizada ao painel.

'init':  A ação init ocorre durante o processo de inicialização do WordPress.

'registrar_taxonomia_ingrediente': Este é o nome da função que será executada quando a ação init ocorrer. 

Lembrando que você pode criar quantas taxonomias desejar, bastando seguir a mesma lógica vista no comando acima.

Com essas alterações, não se esqueça de salvar o arquivo functions.php 😁

Na aba de Posts, Páginas e quem sabe de Mídia uma nova taxonomia chamada Ingredientes será criada: 

Tenha em mente que essa opção também se encontra disponível ao editar um Post ou uma Página:

Agora que você já aprendeu a criar taxonomias, chegou o momento de colocarmos a mão na massa e criarmos o arquivo taxonomy.php.

Criando o taxonomy.php

Dentro da pasta raíz do seu tema, você vai precisar criar um arquivo chamado de taxonomy.php:  

<?php
/**
 * O template para exibir páginas de taxonomias.
 *
 * @link https://codex.wordpress.org/Template_Hierarchy
 *
 * @package WPMicilini
 * @since 1.0
 */

get_header(); 

?>

<!-- Insira aqui os códigos para mostrar as taxonomias -->

<?php
get_footer();
?>

Como podemos ver, o conteúdo inicial sempre começa com a abertura das tags PHP, onde inserimos algumas informações relevantes sobre o arquivo em formato de comentários, e é claro, importamos o cabeçalho e o rodapé por meio das funções get_header() e get_footer().

No local onde está escrito <!-- Insira aqui os códigos para mostrar as taxonomias -->, é onde faremos a mágica acontecer, inserindo um punhado de código, como estes que estamos vendo abaixo:

<div class="tag-div">

<?php
if (have_posts()) :
?>

<h1>Taxonomias: <?php single_term_title() ?></h1>

<?php while (have_posts()) : the_post(); ?>

<h2><?php the_title(); ?></h2>
<div class="data-content"><?php the_content(); ?></div>

<?php endwhile; ?>

<?php else : ?>
<p>Não existem taxonomias relacionadas.</p>
<?php endif; ?>

</div>

No comando acima, começamos definindo uma div que vai encapsular todo o conteúdo que será mostrado dali em diante.  

Começamos fazendo a validação com a função have_posts(), para checar se existem postagens a serem mostrada que estão relacionadas com uma taxonomia específica, caso negativo, a execução do código pula para o else, que por sua vez, mostra a mensagem: Não existem taxonomias relacionadas.

single_term_title(): Usado para retornar o título da taxonomia atual.

the_title():Função que retorna o título daquela postagem, ela pode receber parâmetros adicionais.

the_content(): Função usada para retornar o conteúdo do POST que está relacionado a aquela tag. Se preferir você pode fazer o uso da função the_excerpt() que só exibe um resumo da postagem.

As explicações do loop já foram debatidas em lições anteriores, caso ainda tenha alguma dúvida basta acessar este link.

Variações da taxonomy.php

O arquivo taxonomy.php também conta com variações que visam atender tipos específicos de categorias de conteúdo, vejamos cada uma delas a seguir:

taxonomy-{taxonomy}.php: Usamos este modelo quando queremos atender uma taxonomia específica, por exemplo taxonomy-ingrediente.php.

{taxonomy}.php: Você também pode inserir o nome da sua taxonomia diretamente como faz com category.php e tag.php. Por exemplo: ingrediente.php, que o wordpress será capaz de reconhecer este arquivo facilmente.

taxonomy-{taxonomy}-{term}.php: Este arquivo será usado para exibir páginas de termos específicos em uma taxonomia. Por exemplo, supondo que na taxonomia Ingrediente você adicionou o valor Frango, você poderia criar taxonomy-ingrediente-frango.php.

taxonomy-{taxonomy}-{id}.php: Similar ao exemplo anterior, mas usando o ID em vez do termo.

É importante ressaltar que ao usar as variações ditas acima, o WordPress irá automaticamente reconhecer esses modelos específicos ao exibir postagens em taxonomias correspondentes.

Caso não exista tais arquivos, o wordpress seguirá a hierarquia de modo a abrir o arquivo mais genérico que é o taxonomy.php.

E caso ele não exista, o wordpress vai procurar pelos arquivos archive.php até chegar no index.php.

Como acessar a URL das taxonomias?

Normalmente em uma instância do wordpress, você pode acessar as suas taxonomias usando a seguinte URL: /nome-da-taxonomia/termo-da-taxonomia/.

Exemplo da taxonomia ingrediente: /ingrediente/ ou de um termo /ingrediente/frango/.

Conclusão

Nesta lição você aprendeu sobre o modelo de tema taxonomy.php e suas variações.

Até a próxima 😁