¿Cuándo usar is_home() vs is_front_page()?
He descubierto que is_front_page
parece devolver true cuando estoy viendo la página de inicio y tengo una entrada fija asignada allí.
También devuelve true cuando he asignado una página como página de inicio estática a través de Ajustes > Lectura.
¿Por qué querría usar alguna vez is_home()
?

is_front_page()
devuelve verdadero si el usuario está en la página o página de entradas que está configurada como página de inicio en Ajustes->Lectura->Tu página de inicio.
Por ejemplo, si configuras Sobre nosotros
como página de inicio, este condicional solo será verdadero cuando se muestre la página Sobre nosotros.
is_home()
devuelve verdadero cuando está en la página de lista de entradas, que normalmente muestra las últimas 10 publicaciones.
Si los ajustes en Tu página de inicio muestra se dejan por defecto, la página de inicio devolverá verdadero tanto para is_front_page()
como para is_home()
.
Un ejemplo de uso de is_home()
:
- Has configurado tu página de entradas como una página llamada Noticias.
- Cuando un usuario navega allí y deseas mostrar navegación adicional en el encabezado
- Podrías usar
is_home()
para lograr esto.

Exacto. Yo lo diferencio de la siguiente manera: is_front_page()
devuelve verdadero cuando se visualiza la Página Principal del Sitio (ya sea que muestre el índice de entradas del blog o una página estática), mientras que is_home()
devuelve verdadero cuando se visualiza el Índice de Entradas del Blog (ya sea mostrado en la página principal o en una página estática).

He descubierto que is_home()
y is_front_page()
no entregan lo esperado para multisitios. Mi solución alternativa usando las bondades incorporadas de PHP:
if($_SERVER['REQUEST_URI'] == '/') {
// debes estar en la página de inicio
}
Como se mencionó en los comentarios, este enfoque no funcionará para instancias de WP instaladas en subdirectorios de la raíz web. Úsalo bajo tu propio criterio.

En un sitio principal de multisitio, si usas cualquier forma de is_home()
o is_front_page()
en una página de inicio estática o del blog, ambas funciones devolverán falso.

Acabo de probar ambas condiciones en un entorno multisitio y ambas devolvieron verdadero cuando visité las respectivas páginas /
.

Estoy usando la caja VVV de WordPress con el plugin multisitio: https://github.com/Varying-Vagrant-Vagrants/vvv-multisite quizás hay algo mal configurado en él. De cualquier forma, dejo una respuesta con una solución alternativa por si alguien se encuentra en una situación similar.

Tu código es casi perfecto, lo único es: ¿Qué pasa si WP está instalado en un subdirectorio, por ejemplo /blog o /wordpress? Entonces esto será inútil.

@RemziCavdar eso es cierto. Editaré mi respuesta. Desafortunadamente, debido a las muchas formas en que puedes alojar WP, te encuentras con muchos problemas.

Querrás usar is_home()
cuando necesites verificar si el usuario está viendo tu lista de entradas del blog (normalmente configurado para mostrar 10 entradas por página). Si tienes un archivo home.php
en tu tema, este se mostrará cuando la condición is_home()
sea verdadera.
Lo siguiente también puede ayudar a eliminar cierta confusión: cuando las condiciones is_front_page()
e is_home()
son ambas verdaderas, se usará la plantilla front-page.php
en lugar de home.php
.

- Visitas una página de inicio que es la página principal del blog => is_front_page() = VERDADERO && is_home() = VERDADERO
- Visitas una página de inicio que es una página estática => is_front_page() = VERDADERO && is_home() = FALSO
- Visitas la página principal del blog pero tu página de inicio es una página estática => is_front_page() = FALSO && is_home() = VERDADERO (También VERDADERO al acceder a páginas paginadas)
Referencias para las definiciones:
https://developer.wordpress.org/reference/functions/is_home/ https://developer.wordpress.org/reference/functions/is_front_page/
