Skip to content

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

🔧 Como personalizar cabeçalhos do WordPress: 4 técnicas usando o functions.php

🔧 Como personalizar cabeçalhos do WordPress: 4 técnicas usando o functions.php

Os cabeçalhos no WordPress são mais do que apenas texto no topo de uma página. Funcionam para si em quatro direções ao mesmo tempo: SEO (tag de título no SERP), navegação (separador do navegador), design (hierarquia visual na página) e controlo editorial (o que os autores escrevem). Mas as configurações padrão do admin cobrem apenas o básico; os ajustes finos exigem código.

O problema agrava-se quando vários autores trabalham num site. Um escreve cabeçalhos de 120 caracteres e quebra o layout. Outro usa palavras que o seu parceiro proibiu por contrato. Um terceiro esquece-se de que o título da página no SERP e no site são dois campos distintos. Não consegue controlar toda a gente manualmente.

Abaixo estão quatro técnicas específicas para configurar cabeçalhos do WordPress através do functions.php. Cada uma resolve a sua própria tarefa: desde o truncamento automático do comprimento até ao bloqueio programático de palavras proibidas. O código utiliza filtros documentados do WordPress e foi testado no WP 6.x. No final, encontrará uma secção de FAQ sobre o tema.

💡 Visão geral rápida:

  • Limitar automaticamente o comprimento do cabeçalho através do filtro the_title para que os autores não possam quebrar o layout
  • Alterar o alinhamento do cabeçalho do artigo através do single.php sem plugins ou edições de CSS
  • Bloquear a publicação de artigos com palavras proibidas através do hook transition_post_status
  • Alterar o separador da tag de título e adicionar títulos personalizados através de campos meta

Como limitar o comprimento do cabeçalho no WordPress

Um cabeçalho longo pode destruir até o layout mais cuidadosamente desenhado. Na página inicial, onde são exibidos excertos, um cabeçalho de 120 caracteres extravasa o cartão e o design parece quebrado. Isto afeta especialmente sites com grelhas de várias colunas.

A solução é o filtro the_title, que trunca o cabeçalho para um limite especificado quando exibido na página. O registo real na base de dados permanece intacto; apenas o texto exibido é encurtado.

Código para o functions.php:

1function sdstudio_limit_title_length( $title ) {
2 $max = 60;
3 if ( mb_strlen( $title ) > $max ) {
4 return mb_substr( $title, 0, $max ) . ' …';
5 }
6 return $title;
7}
8add_filter( 'the_title', 'sdstudio_limit_title_length' );

Eis o que acontece: mb_strlen conta os caracteres corretamente para cirílico (ao contrário de strlen, que conta bytes). Quando o limite de 60 caracteres é excedido, o cabeçalho é truncado e são adicionadas reticências no final para que os leitores percebam que este não é o texto completo. Pode substituir 60 por qualquer outro número para se adequar ao seu layout.

Onde aplicar seletivamente? Se precisar de truncar cabeçalhos apenas num local específico (por exemplo, num widget de artigos populares), envolva o add_filter numa tag condicional:

1if ( is_home() || is_front_page() ) {
2 add_filter( 'the_title', 'sdstudio_limit_title_length' );
3}

A mesma abordagem funciona para is_archive(), is_category() e qualquer outro contexto.

Como alterar o alinhamento do cabeçalho do artigo

Os temas do WordPress variam. Alguns oferecem opções de alinhamento no personalizador; outros não. Se o seu tema se enquadra na segunda categoria, o cabeçalho assume o alinhamento à esquerda por defeito e não encontrará uma definição para isto no painel de administração.

O alinhamento do cabeçalho é definido no template single.php, o ficheiro responsável por exibir artigos individuais. Há apenas quatro passos:

Editor de temas WordPress single.php com código de alinhamento de cabeçalho
  • Abra Aparência → Editor de Temas (ou o ficheiro single.php via FTP/painel de alojamento)
  • Encontre a linha <?php the_title(); ?>, que produz o cabeçalho
  • Envolva-a numa tag com o alinhamento desejado

Alinhamento à esquerda (padrão):

1<?php the_title(); ?>

Centro:

1<div style="text-align: center;"><?php the_title(); ?></div>

Direita:

1<div style="text-align: right;"><?php the_title(); ?></div>
  • Guarde o ficheiro e abra qualquer artigo; o cabeçalho aparecerá na posição especificada

Este método é básico, mas funciona para qualquer tema. Uma abordagem mais limpa é adicionar uma classe CSS através do filtro body_class e estilizar através da folha de estilos, mas para uma correção rápida, os estilos inline são suficientes.

Como bloquear palavras indesejadas nos cabeçalhos

Um aviso textual aos autores («por favor, não use a palavra X nos cabeçalhos») funciona até ao primeiro prazo esquecido. Mais cedo ou mais tarde, alguém publicará um cabeçalho com uma frase proibida e, no melhor dos casos, o artigo será visto internamente; no pior dos casos, um parceiro ou concorrente vê-lo-á.

O bloqueio programático resolve o problema de forma radical: o WordPress simplesmente impede a publicação do artigo se o cabeçalho contiver uma palavra proibida. O autor vê uma mensagem de erro e deve corrigir o texto antes de publicar.

Código functions.php para bloquear palavras proibidas em cabeçalhos WordPress

Código para o functions.php:

1function sdstudio_block_forbidden_title_words( $new_status, $old_status, $post ) {
2 if ( 'publish' !== $new_status || 'publish' === $old_status ) {
3 return;
4 }
5
6 $restricted = array( 'word1', 'word2', 'word3' );
7 $title = $post->post_title;
8
9 foreach ( $restricted as $word ) {
10 if ( mb_stripos( $title, $word ) !== false ) {
11 wp_die( 'Ошибка: заголовок содержит запрещённое слово — «' . esc_html( $word ) . '». Измените заголовок и попробуйте снова.' );
12 }
13 }
14}
15add_action( 'transition_post_status', 'sdstudio_block_forbidden_title_words', 10, 3 );

Como funciona: o hook transition_post_status é acionado em qualquer alteração de estado de um artigo. Verificamos se o novo estado é publish e se o estado anterior não é publish (caso contrário, cada atualização de um artigo já publicado também seria bloqueada). Em seguida, o mb_stripos procura cada palavra proibida no título, sem distinção entre maiúsculas e minúsculas. Se encontrar, o wp_die interrompe a publicação com uma mensagem clara.

Para adicionar a sua própria palavra, substitua word1, word2, word3 no array $restricted. Pode adicionar quantas palavras forem necessárias; a função irá percorrê-las todas.

Bónus: mostrar aos autores a lista de palavras proibidas logo abaixo do campo do título. Adicione este código ao mesmo functions.php:

1function sdstudio_show_restricted_words_notice() {
2 $restricted = array( 'word1', 'word2', 'word3' );
3 echo '<div style="color:#856404;background:#fff3cd;padding:6px 12px;margin:8px 0;border-radius:4px;font-size:13px;">';
4 echo 'Запрещённые слова в заголовке: <strong>' . implode( ', ', $restricted ) . '</strong>';
5 echo '</div>';
6}
7add_action( 'edit_form_after_title', 'sdstudio_show_restricted_words_notice' );

Agora, a lista de palavras proibidas fica visível acima do editor, para que os autores não tenham de adivinhar o que está proibido.

Separador de título e tags de título personalizadas

O separador de título é o símbolo entre o nome do site e o título do artigo no <title>. Nos resultados de pesquisa, aparece como «Nome do Site | Título do Artigo» ou «Nome do Site - Título do Artigo». Isto não afeta diretamente a taxa de cliques, mas distingue visualmente o seu snippet dos outros.

Desde o WordPress 4.4, o separador é alterado através do filtro document_title_separator. O código são apenas três linhas:

1function sdstudio_change_title_separator( $separator ) {
2 return '|';
3}
4add_filter( 'document_title_separator', 'sdstudio_change_title_separator' );

Pode substituir o símbolo na terceira linha por qualquer caractere: barra vertical, hífen, sinal de maior, ponto médio. Não utilize caracteres especiais como ★ ou →; a Google não os exibe e o seu snippet nos resultados de pesquisa ficará com um aspeto descuidado.

Para versões anteriores ao WordPress 4.4: a função wp_title está obsoleta, mas se o seu site ainda estiver numa versão mais antiga, atualize primeiro (é uma questão de segurança) e depois ajuste o separador. O código antigo que usa wp_title permanece na documentação do WordPress como referência histórica, mas não é recomendado.

Como definir uma tag de título personalizada para um artigo individual

Há situações em que a tag de título para a SERP deve ser diferente do H1 na página. Os plugins de SEO (Yoast, Rank Math) fornecem um campo separado para isso. Mas se não usar um plugin de SEO, a tarefa resolve-se com um campo personalizado e o filtro pre_get_document_title.

Código para o functions.php:

1function sdstudio_custom_title_from_meta( $title ) {
2 if ( is_singular() ) {
3 $custom = get_post_meta( get_the_ID(), 'custom_post_title', true );
4 if ( $custom ) {
5 return esc_html( $custom );
6 }
7 }
8 return $title;
9}
10add_filter( 'pre_get_document_title', 'sdstudio_custom_title_from_meta', 20 );

Como usar:

  • Abra o artigo que precisa de um <title> personalizado
  • No bloco «Campos Personalizados» (se não o vir, ative-o em «Opções de Ecrã»), crie um campo com o nome custom_post_title
  • Introduza a tag de título desejada como valor, por exemplo, «Análise de plugin de cache 2026, comparação e testes»
  • Guarde o artigo

Se o campo personalizado não estiver preenchido, o WordPress usa a tag de título padrão (título do artigo + separador + nome do site). O mecanismo funciona apenas para páginas singulares (is_singular); os títulos em arquivos e na área de administração não são afetados.

Nota importante: o pre_get_document_title tem prioridade 20, o que garante que o filtro é executado DEPOIS da formação padrão do título e a substitui.

Veja o vídeo de 6 minutos sobre o tópico; ele mostra o processo visual de configuração das tags de título através da administração do WordPress e dos plugins de SEO.

⁉️🤔 Perguntas frequentes

O código deste artigo funciona no WordPress 6.x (a versão atual em wordpress.org)?

Sim, todo o código foi testado na versão atual do WordPress. Os filtros the_title, document_title_separator e pre_get_document_title fazem parte do núcleo do WordPress desde as versões 4.4-5.0 e são totalmente suportados no WP 6.x. A única alteração face a guias mais antigos: o hook obsoleto publish_post foi substituído por transition_post_status.

Devo editar o ficheiro functions.php do tema filho ou posso usar o tema principal?

Edite sempre o tema filho. Se editar o functions.php do tema principal, todas as alterações serão perdidas na próxima atualização. Se não tiver um tema filho, crie um: demora cinco minutos através do plugin Child Theme Configurator ou manualmente (um ficheiro style.css + um ficheiro functions.php com a diretiva Template:).

Posso obter o mesmo resultado com plugins em vez de código?

Parcialmente. Para títulos SEO existem o Yoast SEO e o Rank Math. Para limitar o comprimento, há plugins como o Title Length Limiter, mas o seu suporte não é fiável. Para bloquear palavras e alterar o separador, não existem plugins padrão; só o código funciona. Além disso, cada plugin extra torna o site mais lento, enquanto quatro linhas no functions.php não acrescentam carga percetível.

O que devo fazer se o site mostrar um ecrã branco após editar o functions.php?

Ligue-se ao servidor via FTP ou através do gestor de ficheiros do seu alojamento, abra o functions.php e elimine o código que adicionou. Se não tiver acesso FTP, vá ao phpMyAdmin, encontre a tabela wp_options, a linha active_plugins e desative temporariamente todos os plugins (isto limpará a cache). Para o futuro: antes de qualquer edição no functions.php, ative o WP_DEBUG no wp-config.php; assim, em vez de um ecrã branco, verá o texto do erro.

O separador do título afeta o SEO?

> Não há um efeito direto nos rankings; o Google não avalia se usa | ou -. Há um efeito indireto: o Google pode não exibir separadores não padronizados (, ) e o seu snippet nos resultados de pesquisa terá um aspeto visual pior. Além disso, um separador reconhecível cria reconhecimento de marca: os utilizadores habituam-se ao formato «Marca | Título» e notam os seus resultados na SERP mais rapidamente.

O que implementar e por que ordem

As quatro técnicas acima cobrem todos os cenários principais para trabalhar com títulos no WordPress. A ordem de implementação vai do simples ao complexo:

Primeiro, altere o separador da tag de título; são três linhas de código com resultados imediatos nos resultados de pesquisa. Depois, configure tags <title> personalizadas através de campos meta se o seu site tiver páginas-chave que precisem de títulos SERP separados. A seguir, implemente o filtro de comprimento; ele protegerá o layout de títulos excessivamente longos sem qualquer ação dos autores. Por fim, adicione o bloqueador de palavras proibidas assim que a lista de frases interditas tiver sido acordada e aprovada.

Antes de qualquer edição no functions.php, faça uma cópia de segurança do ficheiro: copie o seu conteúdo para um editor de texto e guarde localmente. Isto demora dez segundos e poupará horas de recuperação em caso de erro.