
🔧 Come personalizzare i titoli di WordPress: 4 tecniche con functions.php
Le intestazioni in WordPress sono molto più di un semplice testo in cima a una pagina. Lavorano per te in quattro direzioni contemporaneamente: SEO (title tag nella SERP), navigazione (scheda del browser), design (gerarchia visiva nella pagina) e controllo editoriale (ciò che scrivono gli autori). Ma le impostazioni predefinite dell'amministrazione coprono solo le basi; la messa a punto richiede codice.
Il problema si aggrava quando più autori lavorano sullo stesso sito. Uno scrive intestazioni di 120 caratteri e rompe il layout. Un altro usa parole che il tuo partner ha vietato per contratto. Un terzo dimentica che il titolo della pagina nella SERP e sul sito sono due campi distinti. Non puoi tenere traccia di tutto manualmente.
Ecco quattro tecniche specifiche per configurare le intestazioni di WordPress tramite functions.php. Ciascuna risolve un compito preciso: dal troncamento automatico della lunghezza al blocco programmatico di parole vietate. Il codice utilizza filtri documentati di WordPress ed è stato testato su WP 6.x. Alla fine troverai una sezione FAQ sull'argomento.
💡 Panoramica rapida:
- Limitare automaticamente la lunghezza del titolo tramite il filtro
the_title, così gli autori non possono rompere il layout - Modificare l'allineamento del titolo del post tramite
single.phpsenza plugin o modifiche CSS - Bloccare la pubblicazione di post con parole vietate tramite l'hook
transition_post_status - Cambiare il separatore del title tag e aggiungere titoli personalizzati tramite campi meta
Come limitare la lunghezza del titolo in WordPress
Un titolo troppo lungo può distruggere anche il layout progettato con più cura. Nella home page, dove vengono mostrati gli estratti, un titolo di 120 caratteri fuoriesce dalla card e il design appare rotto. Questo colpisce in modo particolare i siti con griglie a più colonne.
La soluzione è il filtro the_title, che tronca il titolo a un limite specificato quando viene visualizzato nella pagina. Il dato effettivo nel database rimane intatto; viene abbreviato solo il testo mostrato.
Codice per functions.php:
1 function 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 } 8 add_filter( 'the_title', 'sdstudio_limit_title_length' );
Ecco cosa succede: mb_strlen conta i caratteri correttamente per il cirillico (a differenza di strlen, che conta i byte). Quando viene superato il limite di 60 caratteri, il titolo viene troncato e alla fine vengono aggiunti dei puntini di sospensione, così i lettori capiscono che non si tratta del testo completo. Puoi sostituire 60 con qualsiasi altro numero per adattarlo al tuo layout.
Dove applicarlo in modo selettivo? Se devi troncare i titoli solo in un punto specifico (ad esempio, in un widget dei post più letti), racchiudi add_filter in un tag condizionale:
1 if ( is_home() || is_front_page() ) { 2 add_filter( 'the_title', 'sdstudio_limit_title_length' ); 3 }
Lo stesso approccio funziona per is_archive(), is_category() e qualsiasi altro contesto.
Come modificare l'allineamento del titolo del post
I temi WordPress variano. Alcuni offrono opzioni di allineamento nel personalizzatore; altri no. Se il tuo tema rientra nella seconda categoria, il titolo sarà allineato a sinistra per impostazione predefinita e non troverai un'impostazione per questo nel pannello di amministrazione.
L'allineamento del titolo si imposta nel template single.php, il file responsabile della visualizzazione dei singoli post. Ci sono solo quattro passaggi:

- Apri Aspetto → Editor del tema (o il file
single.phpvia FTP/pannello di hosting) - Trova la riga
<?php the_title(); ?>, che produce il titolo - Racchiudila in un tag con l'allineamento desiderato
Allineamento a sinistra (predefinito):
1 <?php the_title(); ?>
Centrato:
1 <div style="text-align: center;"><?php the_title(); ?></div>
A destra:
1 <div style="text-align: right;"><?php the_title(); ?></div>
- Salva il file e apri un post qualsiasi; il titolo apparirà nella posizione specificata
Questo metodo è basilare ma funziona con qualsiasi tema. Un approccio più pulito è aggiungere una classe CSS tramite il filtro body_class e stilizzare tramite il foglio di stile, ma per una soluzione rapida gli stili inline sono sufficienti.
Come bloccare parole indesiderate nei titoli
Un avviso testuale agli autori («per favore non usate la parola X nei titoli») funziona fino alla prima scadenza dimenticata. Prima o poi qualcuno pubblicherà un titolo con una frase vietata e, nel migliore dei casi, il post sarà visto internamente; nel peggiore, lo vedrà un partner o un concorrente.
Il blocco programmatico risolve il problema alla radice: WordPress impedisce semplicemente la pubblicazione del post se il titolo contiene una parola bloccata. L'autore vede un messaggio di errore e deve correggere il testo prima di pubblicare.

Codice per functions.php:
1 function 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 } 15 add_action( 'transition_post_status', 'sdstudio_block_forbidden_title_words', 10, 3 );
Come funziona: l'hook transition_post_status si attiva a ogni cambio di stato di un contenuto. Verifichiamo che il nuovo stato sia publish e che il vecchio stato non sia publish (altrimenti verrebbe bloccato anche ogni aggiornamento di un articolo già pubblicato). Poi mb_stripos cerca ogni parola bloccata nel titolo, senza distinguere tra maiuscole e minuscole. Se la trova, wp_die interrompe la pubblicazione con un messaggio chiaro.
Per aggiungere una tua parola, sostituisci word1, word2, word3 nell'array $restricted. Puoi inserire tutte le parole che vuoi; la funzione le scorrerà tutte.
Extra: mostra agli autori l'elenco delle parole vietate subito sotto il campo del titolo. Aggiungi questo codice nello stesso functions.php:
1 function 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 } 7 add_action( 'edit_form_after_title', 'sdstudio_show_restricted_words_notice' );
Ora l'elenco delle parole bloccate è visibile sopra l'editor, così gli autori non dovranno indovinare cosa è vietato.
Separatore del titolo e title tag personalizzati
Il separatore del titolo è il simbolo che sta tra il nome del sito e il titolo dell'articolo nel <title>. Nei risultati di ricerca appare come "Nome Sito | Titolo Articolo" o "Nome Sito - Titolo Articolo". Non incide direttamente sul click-through rate, ma distingue visivamente il tuo snippet da quello degli altri.
Da WordPress 4.4, il separatore si modifica tramite il filtro document_title_separator. Il codice è di sole tre righe:
1 function sdstudio_change_title_separator( $separator ) { 2 return '|'; 3 } 4 add_filter( 'document_title_separator', 'sdstudio_change_title_separator' );
Puoi sostituire il simbolo sulla terza riga con qualsiasi carattere: barra verticale, trattino, segno di maggiore, punto mediano. Non usare caratteri speciali come ★ o →; Google non li mostra e il tuo snippet nei risultati di ricerca apparirà sciatto.
Per versioni precedenti a WordPress 4.4: la funzione wp_title è deprecata, ma se il tuo sito è ancora su una versione vecchia, aggiornalo prima (è una questione di sicurezza), poi regola il separatore. Il vecchio codice che usa wp_title resta nella documentazione di WordPress come riferimento storico ma non è consigliato.
Come impostare un title tag personalizzato per un singolo articolo
Ci sono situazioni in cui il title tag per la SERP dovrebbe essere diverso dall'H1 della pagina. I plugin SEO (Yoast, Rank Math) offrono un campo apposito per questo. Ma se non usi un plugin SEO, il problema si risolve con un campo personalizzato e il filtro pre_get_document_title.
Codice per functions.php:
1 function 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 } 10 add_filter( 'pre_get_document_title', 'sdstudio_custom_title_from_meta', 20 );
Come si usa:
- Apri l'articolo che ha bisogno di un
<title>personalizzato - Nel blocco "Campi personalizzati" (se non lo vedi, attivalo in "Impostazioni schermata") crea un campo chiamato
custom_post_title - Inserisci il title tag desiderato come valore, ad esempio "Recensione plugin caching 2026, confronto e test"
- Salva l'articolo
Se il campo personalizzato non è compilato, WordPress usa il title tag standard (titolo articolo + separatore + nome sito). Il meccanismo funziona solo per le pagine singole (is_singular); i titoli negli archivi e nell'area di amministrazione non vengono modificati.
Nota importante: pre_get_document_title ha priorità 20, il che garantisce che il filtro venga eseguito DOPO la formazione standard del titolo e la sovrascriva.
Guarda il video di 6 minuti sull'argomento; mostra il processo visivo di configurazione dei title tag tramite l'amministrazione di WordPress e i plugin SEO.
⁉️🤔 Domande frequenti
Il codice di questo articolo funziona su WordPress 6.x (la versione attuale su wordpress.org)?
Sì, tutto il codice è stato testato sulla versione corrente di WordPress. I filtri
the_title,document_title_separatorepre_get_document_titlesono parte del core di WordPress dalla versione 4.4-5.0 e sono pienamente supportati in WP 6.x. L'unica modifica rispetto alle guide più datate: l'hook deprecatopublish_postè stato sostituito contransition_post_status.
Devo modificare il functions.php del child theme o posso usare quello principale?
Modifica sempre il child theme. Se modifichi il
functions.phpdel tema principale, tutte le modifiche andranno perse al prossimo aggiornamento. Se non hai un child theme, creane uno: ci vogliono cinque minuti con il plugin Child Theme Configurator o manualmente (un filestyle.css+ un filefunctions.phpcon la direttivaTemplate:).
Posso ottenere lo stesso risultato con i plugin invece del codice?
In parte. Per i titoli SEO ci sono Yoast SEO e Rank Math. Per limitare la lunghezza esistono plugin come Title Length Limiter, ma il loro supporto non è affidabile. Per bloccare parole e cambiare il separatore non ci sono plugin standard; solo il codice funziona. Inoltre ogni plugin extra rallenta il sito, mentre quattro righe nel
functions.phpnon aggiungono alcun carico percepibile.
Cosa devo fare se il sito mostra una schermata bianca dopo aver modificato functions.php?
Collegati al server via FTP o tramite il file manager del tuo hosting, apri
functions.phpe cancella il codice che hai aggiunto. Se non hai accesso FTP, vai su phpMyAdmin, trova la tabellawp_options, la rigaactive_pluginse disattiva temporaneamente tutti i plugin (questo svuoterà la cache). Per il futuro: prima di ogni modifica alfunctions.php, attivaWP_DEBUGinwp-config.php; così invece della schermata bianca vedrai il testo dell'errore.
Il separatore del titolo influisce sulla SEO?
> Non c'è un effetto diretto sul posizionamento; Google non valuta se usi | o -. C'è un effetto indiretto: Google potrebbe non mostrare separatori non standard (★, →) e il tuo snippet nei risultati di ricerca apparirà visivamente peggiore. Inoltre, un separatore riconoscibile costruisce la brand recognition: gli utenti si abituano al formato "Marca | Titolo" e notano i tuoi risultati nella SERP più velocemente.
Cosa implementare e in che ordine
Le quattro tecniche sopra coprono tutti gli scenari principali per lavorare con i titoli di WordPress. L'ordine di implementazione va dal semplice al complesso:
Per prima cosa, cambia il separatore del tag title; sono tre righe di codice con risultati immediati nei risultati di ricerca. Poi configura tag <title> personalizzati tramite campi meta se il tuo sito ha pagine chiave che necessitano di titoli separati per la SERP. Dopodiché, implementa il filtro sulla lunghezza; proteggerà il layout da titoli eccessivamente lunghi senza alcuna azione da parte degli autori. Infine, aggiungi il blocco delle stop word una volta che l'elenco delle frasi vietate è stato concordato e approvato.
Prima di ogni modifica al functions.php, fai un backup del file: copia il suo contenuto in un editor di testo e salvalo in locale. Ci vogliono dieci secondi e ti farà risparmiare ore di ripristino in caso di errore.



