Usando Tags Condicionais no seu Tema

Usando Tags Condicionais no seu Tema

Quando estamos criando nosso tema para WordPress, muitas vezes precisamos fazer algumas validações em nossos arquivos.

Validações como:

  • Saber se o usuário está na URL da Home, e com isso, mostrar uma mensagem personalizada para ele.
  • Verificar se o usuário está logado como administrador no WordPress, e com isso, oferecer recursos que não estão disponíveis para outros visitantes.
  • Verificar se o POST atual é do tipo Sticky, e em caso positivo, mostrar um ícone de "destacado" em cima da foto do post.

E entre muitas outras coisas que podemos fazer com o uso de Tags Condicionais, mas a pergunta que paira no ar é: O que vem a ser de fato essas tags condicionais, e por qual motivo devemos utiliza-las?

O que são Tags Condicionais?

Basicamente, Tags Condicionais, nada mais são do que funções disponibilizadas pelo próprio WordPress, para ajudar VOCÊ (desenvolvedor de temas) a ter acesso a certas configurações do seu site de forma rápida.

Vamos pegar como exemplo, a tag condicional is_home(), que por sua vez, tem o objetivo de verificar se a página atual em que o visitante se encontra, é a página inicial do site.

Você como um desenvolvedor PHP (assim espero), quando está dentro de um ambiente de desenvolvimento, e deseja validar se uma determinada URL, faz parte da página inicial de um site.

Você vai precisar criar uma classe que se comunique com o banco de dados, a fim de retornar um valor booleano, indicando se a URL informada é sua home ou não.

Considerando que o WordPress é um CMS feito em PHP por desenvolvedores que se preocupam com o bem estar da comunidade, é óbvio que eles nos disponibilizaram funções com o intuito de facilitar nossas vidas 🥳

De modo que, em vez de você precisar criar uma classe, que posteriormente acessa o banco de dados para retornar um valor booleano, você simplesmente chama a função is_home().

E com apenas uma única linha de código, você já será capaz de validar se a página atual é a sua Home.

Garanto para você que é muito mais simples, menos trabalhoso e mais rápido do que criar toda aquela lógica que mencionei acima 🙃

É claro que, por de baixo dos panos, a função is_home(), está fazendo justamente o que propomos acima, ou seja, ela acessa o banco de dados que por sua vez, retorna um valor booleano indicando se a URL informada é sua home ou não.

A ideia das tags condicionais, é poupar você de dar uma volta no código para fazer algumas validações, uma vez que tais validações já foram construídas pelos próprios desenvolvedores do WordPress, de modo que você não precise fazer isso de novo, entende?

De acordo com a documentação do WordPress, as tags condicionais podem ser usadas em seus arquivos de modelos de temas, com o intuito de alterar o conteúdo exibido em uma página específica.

Em jornada anteriores, nós vimos o uso de algumas Tags condicionais, e se você está me acompanhando deste o início desta jornada, sabe que fiquei pendente em criar uma lição exclusivamente para falar sobre elas, e aqui estamos nós 😉

Considerações sobre Tags Condicionais

Antes de colocarmos a mão na massa, é importante ressaltar que essas tags condicionais, costumam determinar se uma condição foi atendida ou não, retornando TRUE ou FALSE.

É importante ressaltar também, que o WordPress dispõe de algumas funções do tipo get, onde costumamos ter uma tag condicional ligada a elas, como por exemplo:

has_excerpt(): Função usada para verificar se existe uma pequena descrição de um POST.

the_excerpt(): Função usada para recuperar a pequena descrição de um POST.

Note que a has_exerpt() é usada para verificar, e a the_excerpt() é usada para retornar a descrição em si.

Em uma situação real, em vez de mostrarmos uma descrição de forma pura:

<strong>Pequena Descrição: <?php the_excerpt(); ?></strong>

Poderíamos fazer o uso da função has_excerpt() para verificar se tal descrição existe, a fim de evitar que o campo fique vazio:

<?php
if(has_excerpt()){
?>
<strong>Pequena Descrição: <?php the_excerpt(); ?></strong>
<?php
}else{
?>
<strong>Pequena Descrição: Não Informada.</strong>
<?php
}
?>

Conhecendo as Tags Condicionais

Atualmente (Novembro de 2023), existem mais de 60 tags condicionais que podemos usar em nossos modelos de temas para WordPress, são elas:

is_front_page(): Verifica se a consulta atual é a Front Page.

is_home(): Verifica se a consulta atual é a Home.

is_admin(): Verifica se o visitante logado é um administrador.

is_network_admin(): Verifica se a solicitação atual é para a interface administrativa de rede.

is_admin_bar_showing(): Verifica se a barra de administração deve ser exibida na página para o visitante.

is_single(): Verifica se a consulta atual se trata de um post. Essa função pode receber alguns parâmetros como:

is_single(12): Verifica se a consulta atual está relacionada com o Post cujo ID é igual a 12.

is_single('meu-post'): Verifica se a consulta atual está relacionada com o Post cuja URL é igual a meu-post.

is_single('Meu Post'): Verifica se a consulta atual está relacionada com o Post cujo o Título é Meu Post.

is_single([12, 44, 99]): Verifica se consulta atual está relacionada com os Posts cujos os IDs são 12 ou 44 ou 99. Pode-se informar URLs e títulos dentro do array.

is_sticky(): Verifica se a postagem atual está marcada como fixada. Essa função pode receber alguns parâmetros como:

is_sticky(12): Verifica se a postagem atual está marcada como fixada e possui um ID igual a 12.

is_post_type_hierarchical( $post_type ): Verifica se a postagem atual está contida dentro de uma hierarquia informada no $post_type. Consulte os diferentes tipos de postagem, acessando este link.

is_post_type_archive(): Verifica se a postagem atual se trata de um archive.

is_comments_popup(): Determina se o consulta atual está na janela pop-up de comentários.

comments_open(): Verifica se os comentários estão disponíveis para a página atual.

pings_open(): Determina se a postagem atual está aberta para pings.

is_page(): Verifica se a consulta atual se trata de uma página. Essa função pode receber alguns parâmetros:

is_page(12): Verifica se a consulta atual está relacionada com a página cujo ID é igual a 12.

is_page('minha-pagina'): Verifica se a consulta atual está relacionada com o página cuja URL é igual a minha-pagina.

is_page('Minha Página'): Verifica se a consulta atual está relacionada com o Página cujo o Título é Minha Página.

is_page([12, 44, 99]): Verifica se consulta atual está relacionada com as páginas cujos os IDs são 12 ou 44 ou 99. Pode-se informar URLs e Títulos dentro do array.

is_page_template(): Determina se página atual usa um modelo de página. Essa função recebe parâmetros:

is_page_template('templates/about.php'): Verifica se a página atual usa o modelo de template about.php.

is_category($category): Determina se a consulta é para uma página de arquivo de categoria existente. Essa função trabalha com os seguintes parâmetros:

is_category(12): Verifica se a categoria atual tem o ID igual a 12.

is_category('minha-categoria'): Verifica se a categoria atual tem a URL minha-categoria.

is_category('Minha Categoria'): Verifica se a categoria atual tem o título Minha Categoria.

is_category([12, 'sua-categoria', 33, 'Bougus']): Verifica se a categoria faz parte dos IDs 12 e 33, da URL sua-categoria, ou se possui o título Bougus.

is_tag(): Verifica se a consulta atual está relacionado com uma página de modelo de tags. Essa função pode receber parâmetros adicionais:

is_tag(12): Verifica se a tag atual tem o ID igual a 12.

is_tag('minha-tag'): Verifica se a tag atual tem a URL minha-tag.

is_tag('Minha Tag'): Verifica se a tag atual tem o título Minha Tag.

is_tag([12, 'sua-tag', 33, 'Bougus']): Verifica se a tag faz parte dos IDs 12 e 33, da URL sua-tag, ou se possui o título Bougus.

is_tax(): Verifica se a consulta atual é para uma página de arquivo de taxonomia personalizada existente. Essa função pode receber dois parâmetros adicionais:

is_tax($taxonomy, $term): No $taxonomy informamos uma string ou um array de strings contendo o {slug} da taxonomia. O $term representa o termo existente na taxonomia, este podendo ser IDs, Slugs, Títulos ou um array com todas essas informações.

has_term($term, $taxonomy, $post): Verifica se a postagem atual contém algum dos termos fornecidos. Como podemos ver, essa função recebe 3 parâmetros adicionais.

O $term representa o termo existente na taxonomia, este podendo ser IDs, Slugs, Títulos ou um array com todas essas informações.

O $taxonomy informamos uma string ou um array de strings contendo o {slug} da taxonomia.

O $post informamos o ID do post que queremos checar.

term_exists( $term, $taxonomy): Verifica se a postagem atual existe um termo específico. Funciona da mesma que o has_term().

is_taxonomy_hierarchical( $taxonomy ): Verifica se a taxonomia está ordenada de forma hierárquica. O $taxonomy informamos uma string ou um array de strings contendo o {slug} da taxonomia.

taxonomy_exists( $taxonomy ): Verifica se uma determinada taxonomia existe.

is_author(): Verifica se a URL é uma página de autor. Essa função pode receber alguns parâmetros:

is_author(12): Verifica se o autor atual tem o ID igual a 12.

is_author('micilini-roll'): Verifica se o autor atual tem a URL igual a micilini-roll.

is_author('Micilini Roll'): Verifica se o autor atual tem o título Micilini Roll.

is_author([12, 33, 'lucas-defus']): Verifica se o autor atual está inserido dentro de uma lista de argumentos.

is_date(): Verifica se a consulta atual é para um arquivo de data existente.

is_year(): Verifica se a consulta atual é para um arquivo de ano existente.

is_month(): Verifica se a consulta atual é para um arquivo de mês existente.

is_day(): Verifica se a consulta atual é para um arquivo de dia existente.

is_time(): Verifica se a consulta atual é para um arquivo de tempo específico.

is_new_day(): Verifica se a data de publicação da postagem atual no loop é diferente da data de publicação da postagem anterior no loop.

is_archive(): Verifica se a consulta atual é para um arquivo de archive existente.

is_search(): Verifica se a consulta atual é para um arquivo de busca existente.

is_404(): Verifica se a consulta atual é para um arquivo de página de erro (404) existente.

is_paged(): Verifica se a consulta é para um resultado paginado e não para a primeira página.

is_attachment(): Verifica se a consulta é para uma página de anexo existente. Ela pode receber alguns parâmetros adicionais:

is_attachment(12): Verifica se o arquivo atual possui ID igual a 12.

is_attachment('meu-arquivo'): Verifica se o arquivo atual possui a URL igual a meu-arquivo.

is_attachment('Meu Arquivo'): Verifica se o arquivo atual possui o título igual a Meu Arquivo.

is_attachment([12, 33, 'meu-arquivo']): Verifica se o arquivo atual atende alguns dos critérios informados no array.

wp_attachment_is_image($post_id): Verifica se arquivo atual se trata de uma imagem e está relacionado com algum ID. No local do $post_id você deve informar o ID do arquivo.

is_local_attachment( $url ): Verifica se o arquivo atual está hospedado dentro do seu site. No local da $url informamos uma string com a URL.

is_singular(): Verifica se a consulta atual é para uma única postagem existente de qualquer tipo de postagem (postagem, anexo, página, tipos de postagem personalizados). Caso desejar, você pode informar uma string como um parâmetro adicional, de modo a informar o tipo de postagem que deseja verificar.

post_type_exists($post_type): Verifica se um determinado tipo de postagem existe.

is_main_query(): Verifica se a consulta é a consulta principal.

is_new_day(): Verifica se a data de publicação da postagem atual no loop é diferente da data de publicação da postagem anterior no loop.

is_feed(): Verifica se a consulta atual está relacionada com um Feed específico.

is_trackback(): Verifica se a consulta é para uma chamada de endpoint de trackback.

is_preview(): Verifica se a consulta atual contém os parâmetros de prévia de páginas ou posts.

in_the_loop(): Verifica se o chamado está dentro do loop.

is_dynamic_sidebar(): Verifica se a barra lateral dinâmica está habilitada e sendo usada pelo tema.

is_active_sidebar(): Verifica se a barra lateral dinâmica está ativa no tema.

is_active_widget( $widget_callback, $widget_id ): Verifica se um determinado Widget está ativo no tema. No local de $widget_callback informamos o callback do widget, e no $widget_id o ID relacionado com o widget.

is_blog_installed(): Verifica se o WordPress já está instalado.

is_rtl(): Verifica se a localidade do site atual é da direita para a esquerda (RTL).

is_multisite(): Verifica se a opção Multisite está habilitado.

is_main_site(): Verifica se o site atual é o site principal da rede atual.

is_super_admin(): Verifica se o usuário é administrador do site.

is_user_logged_in(): Verifica se o visitante está logado no site.

email_exists( $email ): Verifica se determinado e-mail existe. No local do $email informamos uma string com o email do usuário.

username_exists( $username ): Verifica se determinado nome de usuário existe. No local do $username informamos uma string com o nome do usuário.

is_plugin_active( $path ): Verifica se um determinado plugin está ativo. No local de $path informamos uma string com o caminho do plugin.

is_plugin_inactive( $path ): Verifica se um determinado plugin não está ativo. No local de $path informamos uma string com o caminho do plugin.

is_plugin_active_for_network( $path ): Verifica se um determinado plugin está ativo para a rede de sites. No local de $path informamos uma string com o caminho do plugin.

is_plugin_page(): Verifica se a página de administração atual é gerada por um plugin.

is_child_theme(): Verifica se o tema atual é um sub-tema.

current_theme_supports(): Verifica o suporte de um tema para um determinado recurso. Podemos informar alguns parâmetros adicionais:

current_theme_supports( 'custom-logo' ): Verifica se o tema atual tem suporte para Custom-Logo.

current_theme_supports( 'html5', 'comment-form' ): Verifica se o tema atual tem suporte para HTML5 e Comment-Form.

has_post_thumbnail( $post_id ): Verifica se uma postagem tem uma imagem anexada. Podemos informar o ID da imagem anexada no local de $post_id.

has_title(): Função que verifica se um determinado post ou página possuí um título.

has_exercpt(): Função que verifica se um determinado post ou página possui uma pequena descrição.

Fique antenado

A cada atualização do WordPress, novas tags condicionais vão surgindo, e outras vão se tornando obsoletas.

Por esse motivo, é sempre bom ficar de olho na documentação da plataforma.

Acompanhe também a lista completa de Template Tags do WordPress.

Conclusão

Nesta lição você aprende um pouco mais sobre cada uma das tags condicionais existentes na plataforma do WordPress.

Até a próxima lição 😄