Quando usare is_home() vs is_front_page()?
Ho notato che is_front_page
sembra restituire true quando sto visualizzando la home page e ho un post in evidenza assegnato.
Restituisce true anche quando ho assegnato una pagina come pagina statica principale tramite Impostazioni > Lettura.
Perché dovrei mai voler utilizzare is_home()
?

is_front_page()
restituisce true se l'utente si trova sulla pagina o sulla pagina di articoli impostata come pagina iniziale in Impostazioni->Lettura->La tua homepage mostra
Quindi se imposti about us
come pagina iniziale, questa condizione sarà vera solo quando viene mostrata la pagina about us.
is_home()
restituisce true quando ci si trova nella pagina dell'elenco degli articoli. Solitamente è la pagina che mostra gli ultimi 10 articoli.
Se le impostazioni sotto La tua homepage mostra sono lasciate ai valori predefiniti, la homepage restituirà true sia per is_front_page()
che per is_home()
.
Un esempio di utilizzo di is_home()
:
- Hai impostato la tua pagina degli articoli su una pagina chiamata News.
- Un utente naviga lì e nell'intestazione vuoi mostrare una navigazione aggiuntiva
- Potresti usare
is_home()
per fare questo.

Esatto. Faccio la differenza nel modo seguente: is_front_page()
restituisce true quando si visualizza la Pagina Principale del Sito (che mostri l'indice dei post del blog o una pagina statica), mentre is_home()
restituisce true quando si visualizza l'Indice dei Post del Blog (che sia mostrato nella pagina principale o in una pagina statica).

Ho scoperto che is_home()
e is_front_page()
non restituiscono il risultato atteso per i multisiti. La mia soluzione alternativa utilizzando le funzionalità integrate di PHP:
if($_SERVER['REQUEST_URI'] == '/') {
// devi essere nella home page
}
Come menzionato nei commenti, questo approccio non funzionerà per installazioni WordPress in sottodirectory della root web. Usa a tua discrezione.

Per favore, approfondisci come non fornisce ciò che ci si aspetta.

Su un sito principale multi-sito, se usi qualsiasi forma di is_home()
o is_front_page()
su una pagina frontale statica o del blog, entrambe le funzioni restituiranno false.

Ho appena testato entrambe le condizioni in un ambiente multisito e entrambe hanno restituito true quando ho visitato le rispettive pagine /
.

Sto utilizzando la scatola VVV di WordPress con il plugin multisito: https://github.com/Varying-Vagrant-Vagrants/vvv-multisite forse c'è qualcosa di mal configurato? In ogni caso lascio una risposta con una soluzione alternativa nel caso qualcuno si trovi in una situazione simile.

Il tuo codice è quasi perfetto, l'unica cosa è: E se WP è installato in una sottodirectory, ad esempio /blog o /wordpress. Allora questo sarà inutile.

@RemziCavdar è vero. Modificherò la mia risposta. Purtroppo, a causa dei molti modi in cui puoi ospitare WP, ti imbatti in molti problemi.

Dovresti usare is_home()
quando vuoi verificare se l'utente sta visualizzando l'elenco dei tuoi articoli del blog (solitamente impostato per mostrare 10 articoli per pagina). Se hai un file home.php
nel tuo tema, questo verrà visualizzato quando la condizione is_home()
è vera.
Il seguente punto può aiutare a chiarire ulteriormente: quando entrambe le condizioni is_front_page()
e is_home()
sono vere, verrà utilizzato il template front-page.php
invece di home.php
.

- Visiti una pagina iniziale che è la homepage del blog => is_front_page() = VERO && is_home() = VERO
- Visiti una pagina iniziale statica => is_front_page() = VERO && is_home() = FALSO
- Visiti la homepage del blog ma la tua pagina iniziale è una pagina statica => is_front_page() = FALSO && is_home() = VERO (Anche VERO quando si raggiungono pagine impaginate)
Riferimenti per le definizioni:
https://developer.wordpress.org/reference/functions/is_home/ https://developer.wordpress.org/reference/functions/is_front_page/
