
🖥 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()→truena página estática que designou como página inicialis_home()→truena 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» |
|
|
Página inicial = página estática (visitante em | Página estática + página de blogue separada |
|
|
Página do blogue = | Página estática + página de blogue separada |
|
|
Qualquer outra página ou artigo | Quaisquer configurações |
|
|
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 inicialfooter-home.php, um rodapé para a página inicialheader-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.phpe 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:
1 add_action( 'wp', 'my_homepage_content' ); 2 function 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(). Devolvetruena página frontal do site, independentemente de ser uma página estática ou o feed de artigos. Useis_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() )devolvetrueapenas 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()comis_user_logged_in(). Para utilizadores autenticados, uma saudação pessoal; para visitantes, um apelo à inscrição. O código ocupa cinco linhas e vai noheader.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.



