Como usar tags condicionais no WordPress
Publicados: 2020-06-09Uma das coisas que mais gosto no WordPress é que ele inclui muitas funções que simplificam muito nosso trabalho como desenvolvedores. Por exemplo, considere funções como esc_attr , que escapa de texto para que possa ser adicionado com segurança em um atributo de tag HTML, ou esc_html , que escapa de texto para que possa ser incluído com segurança em uma página HTML. Ou dê uma olhada em algumas das funções que temos para sanitizar os dados que recebemos de um usuário: sanitize_text_field , sanitize_textarea_field ou sanitize_email . Você fica tão acostumado com essas funções bem definidas que realmente sente falta delas quando precisa desenvolver algo fora do domínio do WordPress e descobre que elas não estão mais disponíveis!
A coleção de funções que temos à nossa disposição quando desenvolvemos no WordPress é incrivelmente grande. E quanto mais familiarizados estivermos com eles, mais fácil será escrever código de alta qualidade.
Hoje eu gostaria de falar sobre tags condicionais no WordPress: o que são, como usá-las, o que pode ser enganoso sobre elas e por que elas são tão úteis. Se você é um desenvolvedor de plugins ou temas e ainda não os conhece, não perca este post.
O que são as tags condicionais do WordPress?
Tags condicionais são funções definidas no WordPress cujo resultado é um valor booleano (ou seja, é true ou false ). Essas são funções que podemos usar em nossos plugins e temas para tomar decisões condicionais com base no conteúdo que estamos prestes a renderizar.
O que torna as tags condicionais ótimas é que, em geral, seus nomes são autoexplicativos e resultam em um código muito fácil de entender. Por exemplo, se você usar a tag condicional is_sticky em seu plugin, ela retornará claramente true se, quando estiver dentro do loop do WordPress, estivermos processando um post fixo . Não há dúvida sobre sua semântica, certo?
Antes de começarmos com alguns exemplos, lembre-se de que as tags condicionais só estão disponíveis quando o WordPress determina qual conteúdo o visitante solicitou. Se tentarmos usá-los antes, seu resultado sempre será false . Em outras palavras, só podemos usá-los depois que a ação posts_selection for executada.
Tags condicionais mais comuns
A maioria das tags condicionais no WordPress começam com is_ , já que a resposta para uma pergunta como “é blá blá?” é um valor booleano: “sim” ou “não”. Mas, infelizmente, nem sempre esse critério é seguido (como veremos a seguir).
Existem muitas tags condicionais no WordPress com as quais você se familiarizará à medida que precisar delas. Mas existem alguns que são extremamente comuns e quanto mais cedo você os conhecer, melhor. Então, vamos dar uma olhada nesses:
-
is_single. Ele verifica se o elemento atual é uma postagem do WordPress ou uma instância de qualquer outro tipo de postagem personalizada (como, por exemplo, um produto WooCommerce). -
is_page. Ele verifica se o elemento atual é uma página do WordPress. -
is_attachment. Verifica se o elemento atual é um anexo. Os anexos são os arquivos que você carrega para sua Biblioteca de mídia, como imagens, vídeos, arquivos etc. -
is_singular. Ele verifica se alguma das três funções anteriores étrue. Ou seja, verifica se o elemento atual é um post, página, anexo ou qualquer outro tipo de post. -
comments_open. Ele retornatruese os visitantes puderem comentar sobre o elemento atual. Ver? Aqui você tem um exemplo em que a tag condicional não começa comis_. -
is_category. Ele verifica se estamos olhando para uma página de arquivo de categoria. -
in_category. Retorna verdadeiro se a postagem atual estiver na categoria especificada. -
is_tag. Ele verifica se estamos visualizando uma página de arquivo de tags. -
has_tag. Ele verifica se a postagem atual está marcada usando a tag especificada. -
is_main_query. Ele verifica se estamos no loop principal do WordPress.
Você sabia que existem tags condicionais que podem ser enganosas?
Existem alguns casos em que as tags condicionais têm nomes que podem nos levar a confusão, pois o que elas parecem avaliar e o que elas realmente avaliam são coisas diferentes:
-
is_admin. Você pode pensar que esta função verifica se o usuário atual é um administrador, certo? Errado! Ele verifica se estamos em uma página dentro do WordPress Dashboard (e então o resultado seriatrue) ou no front-end (ou seja,false). -
is_home. Eu costumava pensar que esta função verifica se a página atual é sua página inicial. Por exemplo, em nosso site, seriahttps://neliosoftware.com. Mas, infelizmente, esse não é o caso. O WordPress nasceu como uma plataforma de blogs e acho que este é um exemplo de algum “código legado”.is_homeé uma função condicional que verifica se a página atual é sua página do Blog . Assim, por exemplo, se você estiver usando a configuração padrão do WordPress,is_homerealmente retornarátruequando um visitante estiver na página inicial (https://yourweb.com), porque essa página mostra suas últimas postagens no blog. Mas se você definir sua página de blog para outra coisa (comohttps://yourweb.com/blog), entãois_homeserátruequando o visitante solicitarhttps://yourweb.com/blogefalsecaso contrário. -
is_front_page. E esta é a tag condicional que informará quando o visitante estiver na “página inicial”. -
is_dynamic_sidebar. Esta função verifica se o seu tema possui uma ou mais barras laterais de widgets e, se tiver, retornarátruese pelo menos uma dessas barras laterais não estiver vazia.
Parametrização de tags condicionais
Embora a maioria das tags condicionais sejam funções que podem ser chamadas sem parâmetros, muitas delas suportam parâmetros. Se os usarmos, podemos ser mais específicos sobre os critérios que o post atual deve atender. E eles fazem isso de uma maneira bastante lógica.

Dependendo da função específica que estamos usando, podemos querer verificar se o elemento atual possui um determinado ID ou um determinado slug, se é uma instância de um determinado tipo de postagem ou mesmo se possui um título específico. Por exemplo:
-
is_singular( 'product' )verifica se o elemento atual é um product . -
is_page( 'Contact Us' )verifica se o título da página atual é “Fale Conosco”. Esta função aceita diferentes tipos de argumentos e, dependendo do que você fornecer, verificará uma coisa ou outra. Por exemplo, você pode verificar se o elemento atual possui um determinado ID ou um determinado título ou slug. Bem legal, hein? Você pode até usar listas como parâmetros! -
is_single( [ 5, 10, 11 ] )verifica se o ID do elemento atual é 5, 10 ou 11. É bem parecido comis_page, mas, como dissemos antes, funciona para posts que não sejam page.
Como usar tags condicionais
Vamos dar uma olhada em alguns exemplos onde as tags condicionais podem ser úteis.
Personalizando modelos
Como você provavelmente previu, as tags condicionais são obviamente úteis em temas. Se você deseja que o tema mostre uma informação ou outra dependendo do tipo de conteúdo que está sendo visualizado em um determinado momento (e isso é algo que queremos fazer com frequência), as tags condicionais são suas aliadas:
<?php // ... if ( ! is_page() ) { echo '<span class="whatever">'; echo $something_relevant; echo '</span>'; } // ...Isso permite que você use o mesmo modelo para diferentes tipos de conteúdo e personalize cada um deles com tags condicionais.
Ativos de enfileiramento condicional
Mas as tags condicionais também são extremamente úteis para os desenvolvedores de plugins. Especificamente, eles nos ajudam a carregar partes do nosso plugin condicionalmente, dependendo dos resultados que obtemos das tags condicionais.
Por exemplo, imagine que estamos desenvolvendo um plugin que adiciona algum tipo de funcionalidade aos nossos posts. Suponha que essa funcionalidade exija que enfileiramos um script e uma folha de estilo no front-end. Para enfileirar scripts e estilos no WordPress, temos um filtro chamado wp_enqueue_scripts :
function nelio_plugin_fancy_feature() { wp_enqueue_script( 'nelio_plugin_feat', nelio_plugin()->url . '/assets/dist/feat.js' ); wp_enqueue_style( 'nelio_plugin_feat', nelio_plugin()->url . '/assets/dist/feat.css' ); } add_action( 'wp_enqueue_scripts', 'nelio_plugin_fancy_feature' ); O problema com o snippet anterior é que ele sempre enfileira nossos ativos, não importa o que o visitante solicitou. Sempre que o wp_enqueue_scripts executado (e isso acontece em todas as solicitações de front-end), nossa função de retorno de chamada será chamada e nosso script e folha de estilo serão adicionados. Mas dissemos que nosso recurso afeta apenas as postagens do blog, então… realmente precisamos enfileirar esses ativos sempre? Claro que não! E podemos melhorar isso usando a tag condicional apropriada:
function nelio_plugin_fancy_feature() { if ( ! is_single( 'post' ) ) { return; } wp_enqueue_script( 'nelio_plugin_feat', nelio_plugin()->url . '/assets/dist/feat.js' ); wp_enqueue_style( 'nelio_plugin_feat', nelio_plugin()->url . '/assets/dist/feat.css' ); } add_action( 'wp_enqueue_scripts', 'nelio_plugin_fancy_feature' );Em suma
As tags condicionais do WordPress nos permitem testar diferentes critérios de nosso conteúdo e assim adaptar o que acontecerá com base nisso. Apesar de sua extrema simplicidade, são funções muito úteis que tornam nosso código mais inteligível e eficiente.
Espero que você tenha aprendido alguma coisa hoje e, como sempre, se tiver alguma dúvida ou comentário, informe-nos na seção de comentários abaixo.
Imagem em destaque por Justin Luebke no Unsplash.
