X

O guia definitivo para as tags condicionais do WordPress

As tags condicionais do WordPress são um ótimo recurso do WordPress que permite controlar o conteúdo que é exibido em uma página. Há tags condicionais para diferentes áreas de seu site, como a página inicial, posts de blogs e páginas. Isso permite que você altere o que é exibido em seu site. Por exemplo, você pode alterar o logotipo do seu site em diferentes áreas do site.

Neste tutorial, explicarei quais tags condicionais estão disponíveis e mostrarei como elas podem ser usadas em temas e plug-ins.

Como funcionam as tags condicionais do WordPress

As tags condicionais são um tipo de dados booleano que só pode retornar verdadeiro ou falso. A tag is_home(), por exemplo, refere-se ao índice do blog. Podemos usar essa tag para exibir uma mensagem aos visitantes do nosso blog. Essa mensagem não será exibida em nenhum outro lugar.

O código é simples. Tudo o que estamos fazendo abaixo é verificar se a página que está sendo exibida é a página de índice do blog. Se for, exibimos nossa mensagem.

<?php         
 
if ( is_home()) {

echo "Welcome to Our Blog!!";

}

?>

O exemplo acima é um exemplo básico do que pode ser obtido com o uso de tags condicionais, mas isso é basicamente tudo. Você está simplesmente verificando o tipo de página que está sendo exibida. Dependendo de o resultado ser verdadeiro ou falso, outro trecho de código é acionado.

Antes de examinarmos mais exemplos de como as tags condicionais podem ser usadas, vamos primeiro examinar as tags condicionais mais populares que você provavelmente verá usadas em seus temas do WordPress.

  • is_home() – Verifica se o índice da postagem do blog está sendo exibido. Isso pode ou não ser sua página inicial também.
  • is_front_page() – Verifica se a sua página inicial está sendo exibida. Isso funciona se as configurações da página inicial estão definidas para exibir publicações do blog (ou seja, o índice do blog) ou uma página estática.
  • is_single() – Verifica se algum tipo de post único está sendo exibido (excluindo anexos).
  • is_attachment() – Verifica se um anexo está sendo exibido.
  • is_page() – Verifica se uma página está sendo exibida.
  • is_singular() – Verifica se um único post, anexo ou página está sendo exibido. True é retornado se qualquer uma dessas condições for atendida.
  • is_category() – Verifica se uma página de arquivo de categoria está sendo exibida.
  • is_search() – Verifica se uma página de resultados de pesquisa está sendo exibida.
  • is_tag() – Verifica se um arquivo de tags está sendo exibido.
  • is_author() – Verifica se uma página de arquivo de autor está sendo exibida.
  • is_archive() – Verifica se algum tipo de página de arquivo está sendo exibido, incluindo arquivos de categoria, tag, data e autor.
  • is_sticky() – Verifica se uma postagem foi definida como fixa.
  • is_multi_author() – Verifica se mais de um autor publicou mensagens no site. True é retornado se duas ou mais pessoas tiverem publicado posts. Se apenas um autor tiver publicado posts, ou se nenhum post tiver sido publicado, false será retornado.

Há seis tags condicionais baseadas em tempo que você também achará úteis. Essas tags referem-se a páginas de arquivo de datas. Por exemplo, o URL http://www.yourwebsite.com/2013/12/ é uma página de arquivo baseada em mês.

Se qualquer uma das seguintes tags condicionais retornar verdadeiro, is_archive() também será verdadeiro.

  • is_date() – Verifica se é uma página de arquivo baseada em data.
  • is_year() – Verifica se é uma página de arquivo baseada em ano.
  • is_month() – Verifica se é uma página de arquivo baseada em mês.
  • is_day() – Verifica se é uma página de arquivo baseada em dia.
  • is_time() – Verifica se é uma página de arquivo baseada em tempo.
  • is_new_day() – Verifica se hoje é um novo dia. Se a postagem atual tiver sido publicada em um dia diferente da postagem anterior, o resultado será verdadeiro. False será retornado se ambas as postagens tiverem sido publicadas no mesmo dia.

Você encontrará frequentemente tags condicionais como is_home() e is_single(), mas não precisa se lembrar de todas essas tags condicionais. A maioria dos usuários do WordPress consulta o codex do WordPress para obter a tag condicional apropriada quando precisa configurar uma função condicional.

Exemplos de tags condicionais

Muitas tags condicionais permitem que parâmetros sejam passados para a função. Isso lhe dá muito mais controle sobre quais condições devem ser atendidas antes que algo seja acionado. is_page() é um bom exemplo disso. A tag permite verificar se a página que está sendo exibida é uma página. is_page() retornará o valor true se qualquer página for exibida, mas você precisa especificar o parâmetro $page se quiser ser mais específico. O parâmetro $page pode ser o ID da página, o título da página ou o slug da página.

Vamos considerar um site normal que tem uma página sobre e você deseja personalizar a página sobre de forma diferente de todas as outras páginas. Por exemplo, você pode exibir uma foto da sua empresa na parte superior da barra lateral ou exibir informações adicionais na parte inferior da página sobre.

Para fazer isso, você precisa definir o parâmetro $page. Se o ID da página fosse 10, você poderia abrir sua instrução condicional com algo assim:

if ( is_page(10) ) {

Uma página específica também pode ser especificada passando o título da página para a função.

if ( is_page( 'About Us' ) ) {

O slug da página também pode ser usado. Como você deve se lembrar, o slug da página é o identificador nomeado exclusivo no final do URL. Se o URL de sua página sobre fosse www.yourwebsite.com/about-our-company/, o slug da página seria about-our-company.

if ( is_page( 'about-our-company' ) ) {

Algumas tags condicionais, como is_page(), também podem passar parâmetros em uma matriz. A instrução condicional a seguir retornará um valor verdadeiro se qualquer uma das condições for verdadeira.

if ( is_page( array( 10, 'About Us', 'about-our-company' ) ) ) {

É comum que os desenvolvedores definam mais de uma condição ao usar tags condicionais. Voltemos à simples tarefa de exibir uma mensagem de boas-vindas aos visitantes do blog. Isso é algo que um site corporativo pode querer adicionar à área do blog, mas não a outras áreas do site (por exemplo, página inicial, página de contato, página sobre etc.).

Eles podem fazer isso usando as tags condicionais is_home() e is_single(), que representam o índice do blog e as postagens individuais, respectivamente. Para exibir uma mensagem em ambas as áreas, você precisa usar o operador lógico OR ||. Isso é ilustrado no código abaixo. A instrução if inicial verifica se a página é o índice do blog ou um único post. Se um dos dois for verdadeiro, a mensagem será exibida.

<?php         
 
if ( is_home() || is_single() ) {

echo "Welcome to Our Blog!!";

}

?>

Outro operador lógico muito útil é o operador AND &&. Ele é usado quando você deseja que duas ou mais condições sejam verdadeiras antes que algo seja acionado. A instrução if a seguir verifica se uma página é tanto uma página de arquivo quanto uma página categorizada na categoria de notícias. Nas páginas da categoria de notícias, a mensagem de boas-vindas será exibida. Nada será exibido em outras categorias.

<?php 

if ( is_archive() && is_category( 'News' ) ) {
  
echo "Welcome to the News Archives";

}

?>

Os operadores AND e OR podem ser combinados. O exemplo abaixo foi extraído do modelo functions.php do tema padrão do WordPress Twenty Thirteen. A função é usada para exibir o título da página no navegador, mas somente parte da função é mostrada abaixo.

A instrução if retorna um valor verdadeiro se houver uma descrição do site e o usuário estiver visualizando o índice do blog ou a página inicial. A descrição do site pode ser inserida por meio do campo tagline em sua área de configurações gerais. Se você preencher esse campo, no índice do blog e na página inicial, a barra de título exibirá “Site Title | Site Description” (observação: o separador é exibido usando a string $sep no código abaixo). Se você não o fizer, a barra de título exibirá “Site Title”.

Como você pode ver, is_home e _is_front_page são vistos como uma única entidade devido ao operador OR. É por isso que eles são colocados entre colchetes.

if ( $site_description && ( is_home() || is_front_page() ) )
		$title = "$title $sep $site_description";

Outro operador lógico do PHP que você pode usar é o operador not !. Ele é mais prático de usar em muitas circunstâncias. Por exemplo, digamos que você queira exibir uma fotografia em todas as suas páginas, exceto nos arquivos. Não há necessidade de configurar uma longa declaração condicional que pergunte “Esta é a página inicial, esta é uma postagem única, esta é uma página…”. É mais prático simplesmente perguntar “Esta não é uma página de arquivo?”.

Para fazer isso, basta adicionar um ponto de exclamação antes da tag condicional. O código abaixo mostra como isso é simples na prática. Ele exibirá uma imagem em todas as páginas do seu site, exceto nas páginas de arquivo.

<?php 

if ( !is_archive() ) { ?>
  
<img src="photo.jpg" />

<?php 

}

?>

Até agora, vimos exemplos básicos de uso de tags condicionais em que algo é acionado ou não é acionado (ou seja, se A for verdadeiro, faça B). Na prática, geralmente há outra ação a ser executada se uma condição não for atendida. Além disso, pode haver várias condições que podem ser atendidas, com uma resposta diferente para cada uma delas.

Em vez de escrever várias instruções individuais para isso, é prático usar instruções else e elseif. Isso lhe permite um maior grau de controle sobre o que é exibido no seu site.

Podemos mostrar isso usando um exemplo. Digamos que você queira mostrar um logotipo diferente no seu site em diferentes áreas do site. Como você faria isso? A resposta é simples: Usamos as instruções else e elseif. O código abaixo mostra como isso pode ser feito.

<?php 

if ( is_home() || is_front_page() ) { ?>
  
<img src="logo-home.png" />

<?php 

} elseif ( is_category() ) { ?>

<img src="logo-category.png" />

<?php 

} elseif ( is_single() ) { ?>

<img src="logo-blog-post.png" />

<?php 

} elseif ( is_page() ) { ?>

<img src="logo-page.png" />

<?php 

}

else { ?>

<img src="logo-general.png" />

<?php 

}

?>

Dependendo da área do site que o visitante estiver visualizando, um dos cinco logotipos será exibido usando o código acima. Esse é um exemplo básico que ilustra a facilidade com que as instruções else e elseif podem ser usadas para controlar muitas áreas diferentes do seu site.

As instruções else e elseif também são usadas em outras partes do WordPress. A maioria dos modelos functions.php os utiliza e muitos temas do WordPress os utilizam para alterar a forma como o título do site é exibido nos navegadores.

Mais tags condicionais

Há várias outras tags condicionais disponíveis. Muitas delas são usadas por desenvolvedores em temas e plug-ins.

Abaixo está uma lista de algumas das outras tags condicionais que estão disponíveis para você.

  • is_tax() – Verifica se uma página de arquivo de taxonomia personalizada é exibida.
  • has_term() – Verifica se a postagem atual tem um dos termos especificados.
  • taxonomy_exists() – Verifica se o nome da taxonomia existe.
  • post_type_exists() – Verifica se existe um tipo de postagem.
  • is_post_type_hierarchical( $post_type ) – Verifica se o tipo de postagem é hierárquico.
  • is_post_type_archive() – Verifica se a página de arquivo de um tipo de postagem específico está sendo exibida.
  • is_comments_popup() – Verifica se a janela pop-up de comentários está aberta.
  • comments_open() – Verifica se os comentários são permitidos para o post ou a página atual.
  • pings_open() – Verifica se os pings são permitidos para o post ou a página atual.
  • is_feed() – Verifica se a consulta atual é para um feed.
  • is_404() – Verifica se um erro 404 está sendo exibido.
  • is_paged() – Verifica se a página que você está visualizando atualmente é uma página paginada diferente da página um. Posts e páginas são paginados quando você usa a quicktag nextpage em seu conteúdo para dividir posts grandes.
  • is_trackback() – Verifica se um trackback está sendo usado.
  • is_admin() – Verifica se o usuário está conectado à área de administrador. Não é usado para verificar se um usuário tem privilégios de administrador, apenas se ele está conectado ao painel do WordPress.
  • is_page_template() – Verifica se a página que está sendo visualizada está usando um modelo de página. Um modelo de página específico pode ser definido, se necessário.
  • is_preview() – Verifica se um post de blog está sendo visualizado no modo de rascunho.
  • has_excerpt() – Verifica se o post atual tem um trecho. Podem ser definidos posts específicos.
  • has_nav_menu() – Verifica se um local de menu tem um menu atribuído. Isso é usado por desenvolvedores de temas para mostrar algo caso o usuário não tenha adicionado um menu.
  • in_the_loop() – Verifica se o chamador ainda está dentro do loop do WordPress.
  • is_active_sidebar( $index ) – Verifica se uma determinada barra lateral está sendo usada.
  • is_multisite() – Verifica se há suporte para multisite.
  • is_main_site() – Verifica se um multisite é o site principal da rede.
  • is_super_admin() – Verifica se um usuário é um superadministrador na rede.
  • is_plugin_active( $plugin ) – Verifica se um plug-in está ativado.
  • is_child_theme() – Verifica se um tema filho está sendo usado.
  • current_theme_supports( $feature ) – Verifica se um tema é compatível com um recurso específico, como formatos de postagem ou imagens em destaque.

Verifique também: Como remover taxonomias padrão.

As tags condicionais são um conceito importante do WordPress. Devido à sua utilidade, há poucos temas do WordPress que são projetados sem elas. Depois de entender as instruções else, elseif e os operadores lógicos, como AND, OR e Not, você poderá lidar com qualquer função condicional.

Espero que este guia tenha ajudado você a aprender como usar as tags condicionais do WordPress em seus temas.

Se você gostou deste artigo, junte-se ao IsItWP no Twitter.

Comentários   Deixe uma resposta

  1. hi, im hetting a problem in executing the conditional statement…

    if ( is_home() || is_front_page() || is_page_template(‘templates/template-home.php’) ) {
    //
    } elseif ( is_page() && $inner_disable == ‘disable’ ) {
    //
    } elseif (is_singular( array( ‘products’ ) ) ) {
    trav_get_template( ‘inner-3.php’, ‘/templates/inners’ );
    }////got this working
    elseif ( is_page() && is_page_template( ‘templates/custom-page.php’ ) ) {
    trav_get_template( ‘inner-p.php’, ‘/templates/inners’ );////but not getting this result…instead getting the below one for this condition aswell.
    } else {
    trav_get_template( ‘inner-1.php’, ‘/templates/inners’ );
    }

    1. Are you getting an error message?

  2. Northwesterner maio 27, 2019 em 7:13 pm

    Except that teaching: { ?> with the brace located inside the php closing tag is improper syntax. Refer to WP or PHP code tuts.

  3. Martins Toritseju abril 27, 2019 em 11:13 pm

    This is a really nice tutorial. It helped me a lot in creating my child theme.

    1. Hey Martin, glad it helped. Do follow us on Facebook and Twitter for more tutorials. 🙂

  4. Henrique Silvério junho 4, 2014 em 1:47 pm

    Nice tips. Understanding how to use conditional tags is a key requisite to WordPress developers. 🙂

  5. Nebulas Website Design maio 22, 2014 em 6:16 am

    Thanks for this have got to do some work on a client’s website so a link only appears in a certain shop category so this will come in handy thank you.

Adicionar um comentário

Ficamos felizes por você ter optado por deixar um comentário. Lembre-se de que todos os comentários são moderados de acordo com nossa política de privacidade, e todos os links são nofollow. NÃO use palavras-chave no campo do nome. Vamos ter uma conversa pessoal e significativa.

WordPress Launch Checklist

A lista de verificação definitiva para o lançamento do WordPress

Compilamos todos os itens essenciais da lista de verificação para o lançamento de seu próximo site WordPress em um ebook prático.
Sim, envie-me o livro eletrônico gratuito grátis!