Skip to content

Tutto per WordPress, lo sviluppo web — e non solo

🖥 Come mostrare contenuti solo sulla prima pagina di WordPress

🖥 Come mostrare contenuti solo sulla prima pagina di WordPress

Apri il pannello di amministrazione di WordPress e ti accorgi che il banner promozionale starebbe bene in homepage, ma nei singoli articoli risulta invasivo. Oppure un widget di iscrizione che in homepage raccoglie email, nel corpo dell'articolo occupa solo spazio inutilmente. Ti suona familiare?

WordPress non offre un interruttore integrato del tipo «mostra solo in homepage», ma il problema si risolve facilmente con due righe di PHP. Niente plugin, niente trucchi approssimativi in functions.php. Ecco tre metodi collaudati, dai tag condizionali ai template del tema, con esempi di codice chiari e una spiegazione della differenza tra is_front_page() e is_home().

💡 Panoramica rapida:

  • Usa is_front_page() nel file header.php o footer.php del tuo tema
  • Comprendi la differenza tra is_front_page e is_home
  • Per sostituire interi blocchi, crea file template separati
  • Nessun plugin richiesto

Cosa sono i tag condizionali di WordPress

I tag condizionali sono funzioni PHP native di WordPress che verificano condizioni e restituiscono true o false. Funzionano come un bivio: «se la pagina è la homepage, mostra il banner; altrimenti, non fare nulla».

Il core di WordPress contiene decine di queste funzioni: is_single() per i singoli articoli, is_page() per le pagine, is_category() per le categorie, is_404() per gli indirizzi inesistenti, is_search() per la pagina di ricerca e altre ancora. Permettono di controllare con precisione l'output dei contenuti senza modificare manualmente ogni template; la verifica avviene al volo quando la pagina viene caricata.

Per il compito «solo homepage», due tag sono i più rilevanti: is_front_page() e is_home(). Sembrano simili ma si comportano in modo diverso a seconda delle impostazioni di lettura, e la confusione tra i due è costata ore di debug a molti principianti.

Metodo 1: is_front_page(), lo strumento principale

is_front_page() restituisce true quando il visitatore si trova sulla pagina iniziale del sito, quella che si apre all'URL radice (https://yoursite.com/). Questo è il tuo strumento principale per la stragrande maggioranza delle esigenze di contenuti riservati alla sola homepage.

Sintassi di base:

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

Inserisci questo codice in header.php (subito dopo il tag di apertura <body>) o in footer.php; il banner apparirà esclusivamente in homepage e sarà assente su tutte le altre pagine.

Esempio di output di un blocco HTML personalizzato:

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

Lo stesso approccio funziona per script pubblicitari, stili personalizzati o uno shortcode specifico: racchiudi il blocco desiderato in if ( is_front_page() ) e verrà caricato solo dove serve.

Sfumatura importante: la funzione deve essere chiamata dopo che WordPress ha completato la query principale del database. Non inserirla in functions.php al di fuori degli hook; prima che l'azione wp venga attivata, restituirà false. Posizionamento sicuro: all'interno dei file del tema come header.php, footer.php, sidebar.php e front-page.php. In alternativa, usa gli hook: wp, template_redirect o wp_head.

Metodo 2: is_home(), per la pagina del blog

is_home() restituisce true quando il visitatore si trova sulla pagina che mostra gli ultimi articoli del blog. Ed ecco la trappola in cui cade quasi ogni principiante.

Il codice sembra altrettanto semplice:

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

La differenza sta nelle impostazioni. Vai al pannello di amministrazione: Impostazioni → Lettura → La tua homepage mostra. Se è selezionato «Gli ultimi articoli», allora is_front_page() e is_home() funzionano in modo identico: entrambi restituiscono true sulla homepage. Ma se è selezionato «Una pagina statica», allora:

  • is_front_page()true sulla pagina statica che hai designato come homepage
  • is_home()true sulla pagina che hai designato per la visualizzazione degli articoli (anche se fisicamente si trova su /blog/)

In altre parole: is_home() è legato alla pagina del blog, non alla pagina iniziale del sito. Se hai un sito statico di presentazione e il blog si trova su /blog/, allora is_home() sulla homepage (/) restituirà false.

Is_front_page() vs is_home(): tabella comparativa

Scenario

Impostazioni di lettura

is_front_page()

is_home()

Homepage = ultimi articoli

«Gli ultimi articoli»

true

true

Homepage = pagina statica (visitatore su /)

Pagina statica + pagina blog separata

true

false

Pagina blog = /blog/ (visitatore su /blog/)

Pagina statica + pagina blog separata

false

true

Qualsiasi altra pagina o articolo

Qualsiasi impostazione

false

false

La regola è semplice: se ti serve un contenuto rigorosamente in homepage, usa is_front_page(). Se ti serve un contenuto sulla pagina con il feed degli articoli (indipendentemente dal fatto che sia la homepage), usa is_home().

Nella pratica, la maggior parte delle esigenze si risolve con is_front_page(). is_home() torna utile quando il blog è su una pagina separata e vuoi, per esempio, mostrare un widget «Articoli popolari» proprio lì ma non sulla homepage di presentazione.

Metodo 3: file template separati

Quando devi sostituire non una o due righe ma un intero blocco strutturale (una sidebar, un footer o un header), racchiudere ogni elemento in un if diventa macchinoso. WordPress supporta un meccanismo di file template specifici: crei un file per una pagina particolare e il core lo carica automaticamente.

Passo 1. Crea un nuovo file. Nella cartella del tuo tema, crea una delle tre varianti:

  • sidebar-home.php, una sidebar per la homepage
  • footer-home.php, un footer per la homepage
  • header-home.php, un header per la homepage

Passo 2. Riempilo con il contenuto. Inserisci nel file l'HTML e il PHP che devono apparire solo in homepage. Per esempio, 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. Richiama il file nel template. In front-page.php o index.php (a seconda del tuo tema), sostituisci la chiamata standard:

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

WordPress usa l'argomento 'home' per sostituire automaticamente i file sidebar-home.php, footer-home.php e header-home.php rispettivamente. Se un file non viene trovato, ripiega sul file standard sidebar.php.

Quando questo metodo è giustificato. Scegli l'approccio dei template se:

  • L'intero blocco sta cambiando (non un singolo pulsante, ma l'intera struttura della sidebar)
  • Il tema usa già front-page.php e la logica non si mescola
  • Prevedi di mantenere il sito a lungo termine e vuoi un'organizzazione pulita dei file

Per piccole modifiche il metodo è sproporzionato; il tag condizionale is_front_page() è sufficiente.

Possibili errori e come evitarli

Chiamata prima dell'inizializzazione della query. Il problema più comune: is_front_page() in functions.php senza un hook. La funzione restituisce silenziosamente false e tu pensi che il codice sia rotto. Soluzione: racchiudi sempre la verifica in un hook wp o 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}

Confusione con le impostazioni di lettura. Se hai cambiato il sito da homepage statica a feed degli ultimi articoli e te ne sei dimenticato, is_home() si attiva improvvisamente dove non dovrebbe. Controlla prima Impostazioni → Lettura.

ID pagina cablato nel codice. Alcuni sviluppatori controllano if ( get_the_ID() == 5 ) invece di is_front_page(). È fragile: cambi la homepage nelle impostazioni e si rompe tutto. Usa i tag condizionali; seguono le impostazioni automaticamente.

L'argomento dei tag condizionali di WordPress è approfondito in questo video, da is_page() alle condizioni personalizzate per template non standard. Se lavori regolarmente con i temi, 15 minuti di visione ti faranno risparmiare ore di debug in futuro.

⁉️🤔 Domande frequenti

Cosa scegliere: is_front_page() o is_home()?

Nella maggior parte dei casi, is_front_page(). Restituisce true sulla pagina iniziale del sito, indipendentemente dal fatto che sia una pagina statica o il feed degli articoli. Usa is_home() solo quando ti serve specificamente la pagina del blog (per esempio, /blog/), non la homepage.

Si possono usare entrambi i tag contemporaneamente?

Sì, il costrutto if ( is_home() && ! is_front_page() ) restituisce true solo sulla pagina del blog quando non è la homepage. Utile per siti con homepage statica e sezione articoli separata.

is_front_page() funziona con i plugin di caching?

Sì, ma con una precisazione. I tag condizionali vengono eseguiti lato server prima della consegna dell'HTML; i plugin di cache (WP Rocket, W3 Total Cache) non influiscono su questo. Tuttavia, con i blocchi ESI (Edge Side Includes), verifica che il tuo plugin di cache li supporti.

Come mostro contenuti diversi in homepage per utenti autenticati e non autenticati?

Combina is_front_page() con is_user_logged_in(). Per gli utenti autenticati, un saluto personale; per gli ospiti, una call to action per l'iscrizione. Il codice richiede cinque righe e va in 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; ?>

Un tema child ha bisogno di propri file header-home.php?

Se il tema parent contiene già header-home.php, il tema child lo eredita automaticamente. Per sovrascriverlo, crea un file con lo stesso nome nella cartella del tema child. WordPress cerca il template prima nel tema child e solo dopo nel parent.

Cosa usare nel 2026: un tag condizionale o un file separato?

La scelta dipende dalla portata dell'intervento. Ricorda una regola semplice: una riga di codice o un blocco HTML, usa is_front_page(). Se cambia un intero blocco strutturale (sidebar, footer, header) con il proprio markup e la propria logica, crea file template separati.

Nella pratica, la maggior parte delle esigenze di contenuti riservati alla sola homepage si gestisce con due righe di un tag condizionale. È veloce, non genera file extra nel tema e si legge facilmente quando si riprende in mano il sito sei mesi dopo: non devi indovinare perché hai creato sidebar-home.php, perché vedi il controllo esplicito direttamente nel template.

Prova subito: apri il file header.php del tuo tema attivo, trova il punto dopo <body> e aggiungi un blocco di test con is_front_page(). Se tutto funziona, hai imparato a usare i tag condizionali di WordPress in cinque minuti.