Skip to content

Tudo para WordPress, desenvolvimento web — e não só

🖥 Como mostrar conteúdo apenas na página inicial do WordPress

🖥 Como mostrar conteúdo apenas na página inicial do WordPress

Abre o painel de administração do WordPress e percebe: o banner promocional pertence à página inicial, mas em artigos individuais parece intrusivo. Ou um widget de subscrição que recolhe e-mails na página inicial simplesmente ocupa espaço no corpo do artigo. Parece-lhe familiar?

O WordPress não oferece um interruptor integrado «mostrar apenas na página inicial», mas a tarefa resolve-se facilmente com duas linhas de PHP. Sem plugins, sem hacks de adivinhação no ficheiro functions.php. Abaixo estão três métodos comprovados, desde tags condicionais a templates de tema, com exemplos de código claros e uma explicação da diferença entre is_front_page() e is_home().

💡 Visão geral rápida:

  • Use is_front_page() no header.php ou footer.php do seu tema
  • Compreenda a diferença entre is_front_page e is_home
  • Para substituir blocos inteiros, crie ficheiros de template separados
  • Não são necessários plugins

O que são as tags condicionais do WordPress

As tags condicionais são funções PHP nativas do WordPress que verificam condições e devolvem true ou false. Funcionam como uma bifurcação: «se a página for a página inicial, mostra o banner; caso contrário, não faz nada.»

O núcleo do WordPress contém dezenas destas funções: is_single() para artigos individuais, is_page() para páginas, is_category() para categorias, is_404() para endereços inexistentes, is_search() para a página de pesquisa, entre outras. Permitem-lhe controlar com precisão a saída de conteúdo sem editar cada template manualmente; a verificação é executada no momento em que a página carrega.

Para a tarefa «apenas na página inicial», duas tags são as mais importantes: is_front_page() e is_home(). Parecem semelhantes, mas comportam-se de forma diferente consoante as configurações de leitura, e a confusão entre elas já custou muitas horas de depuração a principiantes.

Método 1: is_front_page(), a ferramenta principal

is_front_page() devolve true quando um visitante está na página frontal do site, aquela que abre no URL raiz (https://yoursite.com/). Esta é a sua ferramenta principal para a grande maioria das tarefas de conteúdo exclusivo da página inicial.

Sintaxe básica:

1<?php if ( is_front_page() ) : ?>
2 <div class="homepage-banner">
3 <p>Специальное предложение только для посетителей сайта!</p>
4 </div>
5<?php endif; ?>
6

Coloque este código em header.php (logo após a tag de abertura <body>) ou em footer.php; o banner aparecerá exclusivamente na página inicial e estará ausente em todas as outras páginas.

Exemplo de saída de um bloco HTML personalizado:

1<?php if ( is_front_page() ) : ?>
2 <section class="hero-promo">
3 <h2>Бесплатная консультация</h2>
4 <p>Оставьте заявку — и мы перезвоним в течение 15 минут.</p>
5 </section>
6<?php endif; ?>
7

A mesma abordagem funciona para scripts de anúncios, estilos personalizados ou um shortcode separado: envolva o bloco desejado em if ( is_front_page() ), e ele carrega apenas onde é necessário.

Nuance importante: a função deve ser chamada depois de o WordPress ter concluído a consulta principal à base de dados. Não a coloque em functions.php fora de hooks; antes de a ação wp ser disparada, ela devolverá false. Posicionamento seguro: dentro de ficheiros de tema como header.php, footer.php, sidebar.php e front-page.php. Em alternativa, use hooks: wp, template_redirect ou wp_head.

Método 2: is_home(), para a página do blogue

is_home() devolve true quando um visitante está na página que mostra os artigos mais recentes do blogue. E aqui reside uma armadilha que apanha quase todos os principiantes.

O código é igualmente simples:

1<?php if ( is_home() ) : ?>
2 <p>Подпишитесь на нашу рассылку — новые статьи каждую неделю.</p>
3<?php endif; ?>

A diferença está nas configurações. Vá ao painel de administração: Configurações → Leitura → A sua página inicial mostra. Se «Os seus artigos mais recentes» estiver selecionado, então is_front_page() e is_home() funcionam de forma idêntica: ambas devolvem true na página inicial. Mas se «Uma página estática» estiver selecionado, então:

  • is_front_page()true na página estática que designou como página inicial
  • is_home()true na página que designou para mostrar os artigos (mesmo que esteja fisicamente localizada em /blog/)

Por outras palavras: is_home() está ligada à página do blogue, não à página frontal do site. Se tem um site estático de apresentação e o blogue está em /blog/, então is_home() na página inicial (/) devolverá false.

Is_front_page() vs is_home(): tabela comparativa

Cenário

Configurações de leitura

is_front_page()

is_home()

Página inicial = artigos mais recentes

«Os seus artigos mais recentes»

true

true

Página inicial = página estática (visitante em /)

Página estática + página de blogue separada

true

false

Página do blogue = /blog/ (visitante em /blog/)

Página estática + página de blogue separada

false

true

Qualquer outra página ou artigo

Quaisquer configurações

false

false

A regra é simples: se precisa de conteúdo estritamente na página inicial, use is_front_page(). Se precisa de conteúdo na página com o feed de artigos (independentemente de ser ou não a página inicial), use is_home().

Na prática, a maioria das tarefas resolve-se com is_front_page(). O is_home() é útil quando o blogue está numa página separada e quer, por exemplo, mostrar um widget de «Artigos populares» especificamente aí, mas não na página inicial de apresentação.

Método 3: ficheiros de template separados

Quando precisa de substituir não uma ou duas linhas, mas um bloco estrutural inteiro (uma barra lateral, rodapé ou cabeçalho), envolver cada elemento em if torna-se pesado. O WordPress suporta um mecanismo para ficheiros de template específicos: cria um ficheiro para uma página em particular e o núcleo seleciona-o automaticamente.

Passo 1. Criar um novo ficheiro. Na pasta do seu tema, crie uma de três variantes:

  • sidebar-home.php, uma barra lateral para a página inicial
  • footer-home.php, um rodapé para a página inicial
  • header-home.php, um cabeçalho para a página inicial

Passo 2. Preenchê-lo com conteúdo. Coloque o HTML e PHP que devem aparecer apenas na página inicial no ficheiro. Por exemplo, sidebar-home.php:

1<div class="homepage-sidebar">
2 <h3>О нашем проекте</h3>
3 <p>Мы помогаем малому бизнесу запускать сайты на WordPress с 2018 года.</p>
4
5 <h3>Подписка</h3>
6 <?php echo do_shortcode( '[newsletter_form]' ); ?>
7</div>
8

Passo 3. Chamar o ficheiro no template. Em front-page.php ou index.php (dependendo do seu tema), substitua a chamada padrão:

1<?php get_sidebar( 'home' ); ?>
2<?php get_footer( 'home' ); ?>
3<?php get_header( 'home' ); ?>

O WordPress usa o argumento 'home' para substituir automaticamente os ficheiros sidebar-home.php, footer-home.php e header-home.php, respetivamente. Se um ficheiro não for encontrado, recorre ao sidebar.php padrão.

Quando este método se justifica. Opte pela abordagem de template se:

  • O bloco inteiro está a mudar (não um único botão, mas toda a estrutura da barra lateral)
  • O tema já usa front-page.php e a lógica não se mistura
  • Planeia manter o site a longo prazo e quer uma organização de ficheiros limpa

Para pequenas edições, o método é exagerado; a tag condicional is_front_page() é suficiente.

Possíveis erros e como evitá-los

Chamada antes da inicialização da consulta. O problema mais comum: is_front_page() em functions.php sem um hook. A função devolve false silenciosamente e você assume que o código está avariado. Solução: envolva sempre a verificação num hook wp ou template_redirect:

1add_action( 'wp', 'my_homepage_content' );
2function my_homepage_content() {
3 if ( is_front_page() ) {
4 add_action( 'wp_head', 'my_homepage_banner' );
5 }
6}

Confusão com as configurações de leitura. Se mudou o site de uma página inicial estática para o feed de artigos mais recentes e se esqueceu disso, o is_home() dispara subitamente onde não devia. Verifique primeiro em Configurações → Leitura.

Codificar rigidamente o ID da página. Alguns programadores verificam if ( get_the_ID() == 5 ) em vez de is_front_page(). Isto é frágil: mude a página inicial nas configurações e tudo se parte. Use tags condicionais; elas acompanham as configurações automaticamente.

O tópico das tags condicionais do WordPress é abordado com mais profundidade neste vídeo, desde is_page() até condições personalizadas para templates não padronizados. Se trabalha com temas regularmente, 15 minutos de visualização poupar-lhe-ão horas de depuração no futuro.

⁉️🤔 Perguntas frequentes

O que escolher: is_front_page() ou is_home()?

Na maioria dos casos, is_front_page(). Devolve true na página frontal do site, independentemente de ser uma página estática ou o feed de artigos. Use is_home() apenas quando precisa especificamente da página do blogue (por exemplo, /blog/), e não da página inicial.

Podem usar-se ambas as tags em simultâneo?

Sim, a construção if ( is_home() && ! is_front_page() ) devolve true apenas na página do blogue quando esta não é a página inicial. Útil para sites com uma página inicial estática e uma secção de artigos separada.

O is_front_page() funciona com plugins de cache?

Sim, mas com uma ressalva. As tags condicionais são executadas no lado do servidor antes da entrega do HTML; os plugins de cache (WP Rocket, W3 Total Cache) não afetam isto. No entanto, com blocos ESI (Edge Side Includes), verifique se o seu plugin de cache os suporta.

Como mostro conteúdo diferente na página inicial para utilizadores autenticados e não autenticados?

Combine is_front_page() com is_user_logged_in(). Para utilizadores autenticados, uma saudação pessoal; para visitantes, um apelo à inscrição. O código ocupa cinco linhas e vai no header.php:

1<?php if ( is_front_page() && is_user_logged_in() ) : ?>
2 <p>С возвращением! Вот ваши последние заказы.</p>
3<?php elseif ( is_front_page() ) : ?>
4 <p>Добро пожаловать! Зарегистрируйтесь для персональных скидок.</p>
5<?php endif; ?>

Um tema filho precisa dos seus próprios ficheiros header-home.php?

Se o tema pai já contiver header-home.php, o tema filho herda-o automaticamente. Para o substituir, crie um ficheiro com o mesmo nome na pasta do tema filho. O WordPress procura o template primeiro no tema filho e só depois no pai.

O que usar em 2026: uma tag condicional ou um ficheiro separado?

A escolha resume-se ao âmbito da tarefa. Lembre-se de uma regra simples: uma linha de código ou um bloco HTML, use is_front_page(). Se um bloco estrutural inteiro (barra lateral, rodapé, cabeçalho) com a sua própria marcação e lógica estiver a mudar, crie ficheiros de template separados.

Na prática, a maioria das tarefas de conteúdo exclusivo da página inicial resolve-se com duas linhas de uma tag condicional. É rápido, não gera ficheiros extra no tema e lê-se facilmente ao fazer a manutenção do site seis meses depois: não tem de adivinhar porque criou sidebar-home.php, porque vê a verificação explícita diretamente no template.

Experimente agora mesmo: abra o header.php do seu tema ativo, encontre o local após <body> e adicione um bloco de teste com is_front_page(). Se tudo funcionar, dominou as tags condicionais do WordPress em cinco minutos.