Skip to content

Todo para WordPress, el desarrollo web — y mucho más

🖥 Cómo mostrar contenido solo en la portada de WordPress

🖥 Cómo mostrar contenido solo en la portada de WordPress

Usted abre el panel de administración de WordPress y se da cuenta: el banner promocional queda bien en la página de inicio, pero en las entradas individuales resulta intrusivo. O un widget de suscripción que recopila correos en la página de inicio simplemente ocupa espacio en el cuerpo del artículo. ¿Le suena familiar?

WordPress no ofrece una opción integrada de «mostrar solo en la página de inicio», pero la tarea se resuelve fácilmente con dos líneas de PHP. Sin plugins, sin trucos de principiante en functions.php. A continuación encontrará tres métodos probados, desde etiquetas condicionales hasta plantillas de tema, con ejemplos de código claros y una explicación de la diferencia entre is_front_page() y is_home().

💡 Resumen rápido:

  • Use is_front_page() en el header.php o footer.php de su tema
  • Comprenda la diferencia entre is_front_page e is_home
  • Para reemplazar bloques completos, cree archivos de plantilla separados
  • No se requieren plugins

Qué son las etiquetas condicionales de WordPress

Las etiquetas condicionales son funciones PHP integradas de WordPress que verifican condiciones y devuelven true o false. Funcionan como una bifurcación: «si la página es la página de inicio, muestre el banner; de lo contrario, no haga nada».

El núcleo de WordPress contiene docenas de estas funciones: is_single() para entradas individuales, is_page() para páginas, is_category() para categorías, is_404() para direcciones inexistentes, is_search() para la página de búsqueda, y otras. Le permiten controlar con precisión la salida de contenido sin editar cada plantilla manualmente; la verificación se ejecuta sobre la marcha cuando la página se carga.

Para la tarea de «solo página de inicio», dos etiquetas son las más importantes: is_front_page() y is_home(). Parecen similares pero se comportan de manera diferente según la configuración de lectura, y la confusión entre ellas ha costado a los principiantes muchas horas de depuración.

Método 1: is_front_page(), la herramienta principal

is_front_page() devuelve true cuando un visitante está en la página frontal del sitio, la que se abre en la URL raíz (https://yoursite.com/). Esta es su herramienta principal para la gran mayoría de las tareas de contenido exclusivo de la página de inicio.

Sintaxis básica:

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

Coloque este código en header.php (justo después de la etiqueta de apertura <body>) o en footer.php; el banner aparecerá exclusivamente en la página de inicio y estará ausente en todas las demás páginas.

Ejemplo de salida de un bloque HTML personalizado:

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

El mismo enfoque funciona para scripts de anuncios, estilos personalizados o un shortcode independiente: envuelva el bloque deseado en if ( is_front_page() ), y se cargará solo donde se necesita.

Matiz importante: la función debe llamarse después de que WordPress haya completado la consulta principal a la base de datos. No la coloque en functions.php fuera de los hooks; antes de que se ejecute la acción wp, devolverá false. Ubicación segura: dentro de archivos de tema como header.php, footer.php, sidebar.php y front-page.php. Alternativamente, use hooks: wp, template_redirect o wp_head.

Método 2: is_home(), para la página del blog

is_home() devuelve true cuando un visitante está en la página que muestra las últimas entradas del blog. Y aquí hay una trampa que atrapa a casi todos los principiantes.

El código es igual de simple:

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

La diferencia está en la configuración. Vaya al panel de administración: Ajustes → Lectura → La página de inicio muestra. Si está seleccionado «Tus últimas entradas», entonces is_front_page() y is_home() funcionan de manera idéntica: ambas devuelven true en la página de inicio. Pero si está seleccionado «Una página estática», entonces:

  • is_front_page()true en la página estática que designó como página de inicio
  • is_home()true en la página que designó para mostrar las entradas (incluso si está físicamente ubicada en /blog/)

En otras palabras: is_home() está vinculada a la página del blog, no a la página frontal del sitio. Si tiene un sitio de aterrizaje estático y el blog está en /blog/, entonces is_home() en la página de inicio (/) devolverá false.

Is_front_page() vs is_home(): tabla comparativa

Escenario

Configuración de lectura

is_front_page()

is_home()

Página de inicio = últimas entradas

«Tus últimas entradas»

true

true

Página de inicio = página estática (visitante en /)

Página estática + página de blog separada

true

false

Página del blog = /blog/ (visitante en /blog/)

Página estática + página de blog separada

false

true

Cualquier otra página o entrada

Cualquier configuración

false

false

La regla es simple: si necesita contenido estrictamente en la página de inicio, use is_front_page(). Si necesita contenido en la página con el feed de entradas (independientemente de si es la página de inicio), use is_home().

En la práctica, la mayoría de las tareas se resuelven con is_front_page(). is_home() resulta útil cuando el blog está en una página separada y quiere, por ejemplo, mostrar un widget de «Entradas populares» específicamente allí, pero no en la página de inicio de aterrizaje.

Método 3: archivos de plantilla separados

Cuando necesita reemplazar no una línea o dos, sino un bloque estructural completo (una barra lateral, un pie de página o un encabezado), envolver cada elemento en if se vuelve engorroso. WordPress admite un mecanismo para archivos de plantilla específicos: usted crea un archivo para una página en particular, y el núcleo lo selecciona automáticamente.

Paso 1. Cree un nuevo archivo. En la carpeta de su tema, cree una de tres variantes:

  • sidebar-home.php, una barra lateral para la página de inicio
  • footer-home.php, un pie de página para la página de inicio
  • header-home.php, un encabezado para la página de inicio

Paso 2. Rellénelo con contenido. Coloque el HTML y PHP que deben aparecer solo en la página de inicio en el archivo. Por ejemplo, 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

Paso 3. Llame al archivo en la plantilla. En front-page.php o index.php (dependiendo de su tema), reemplace la llamada estándar:

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

WordPress usa el argumento 'home' para sustituir automáticamente los archivos sidebar-home.php, footer-home.php y header-home.php respectivamente. Si no se encuentra un archivo, recurre al sidebar.php estándar.

Cuándo se justifica este método. Elija el enfoque de plantilla si:

  • Todo el bloque está cambiando (no un solo botón, sino toda la estructura de la barra lateral)
  • El tema ya usa front-page.php y la lógica no se mezcla
  • Planea mantener el sitio a largo plazo y quiere una organización de archivos limpia

Para ediciones pequeñas, el método es excesivo; la etiqueta condicional is_front_page() es suficiente.

Posibles errores y cómo evitarlos

Llamada antes de la inicialización de la consulta. El problema más común: is_front_page() en functions.php sin un hook. La función devuelve silenciosamente false, y usted asume que el código está roto. Solución: envuelva siempre la verificación en 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}

Confusión con la configuración de lectura. Si cambió el sitio de una página de inicio estática al feed de últimas entradas y lo olvidó, is_home() se activa repentinamente donde no debería. Revise primero Ajustes → Lectura.

Codificar rígidamente el ID de la página. Algunos desarrolladores verifican if ( get_the_ID() == 5 ) en lugar de is_front_page(). Esto es frágil: cambie la página de inicio en la configuración y todo se rompe. Use etiquetas condicionales; rastrean la configuración automáticamente.

El tema de las etiquetas condicionales de WordPress se trata con más profundidad en este video, desde is_page() hasta condiciones personalizadas para plantillas no estándar. Si trabaja con temas regularmente, 15 minutos de visualización le ahorrarán horas de depuración en el futuro.

⁉️🤔 Preguntas frecuentes

¿Qué elegir: is_front_page() o is_home()?

En la mayoría de los casos, is_front_page(). Devuelve true en la página frontal del sitio independientemente de si es una página estática o el feed de entradas. Use is_home() solo cuando necesite específicamente la página del blog (por ejemplo, /blog/), no la página de inicio.

¿Se pueden usar ambas etiquetas simultáneamente?

Sí, la construcción if ( is_home() && ! is_front_page() ) devuelve true solo en la página del blog cuando no es la página de inicio. Útil para sitios con una página de inicio estática y una sección de entradas separada.

¿Funciona is_front_page() con plugins de caché?

Sí, pero con una salvedad. Las etiquetas condicionales se ejecutan en el lado del servidor antes de la entrega del HTML; los plugins de caché (WP Rocket, W3 Total Cache) no afectan esto. Sin embargo, con bloques ESI (Edge Side Includes), verifique que su plugin de caché los admita.

¿Cómo muestro contenido diferente en la página de inicio para usuarios conectados y no conectados?

Combine is_front_page() con is_user_logged_in(). Para usuarios conectados, un saludo personal; para invitados, una llamada a la acción de registro. El código ocupa cinco líneas y va en 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 hijo necesita sus propios archivos header-home.php?

Si el tema padre ya contiene header-home.php, el tema hijo lo hereda automáticamente. Para anularlo, cree un archivo con el mismo nombre en la carpeta del tema hijo. WordPress busca la plantilla primero en el tema hijo y solo después en el padre.

Qué usar en 2026: ¿una etiqueta condicional o un archivo separado?

La elección se reduce al alcance de la tarea. Recuerde una regla simple: una línea de código o un bloque HTML, use is_front_page(). Si cambia un bloque estructural completo (barra lateral, pie de página, encabezado) con su propio marcado y lógica, cree archivos de plantilla separados.

En la práctica, la mayoría de las tareas de contenido exclusivo de la página de inicio se manejan con dos líneas de una etiqueta condicional. Es rápido, no genera archivos adicionales en el tema y se lee fácilmente al mantener el sitio seis meses después: no tiene que adivinar por qué creó sidebar-home.php porque ve la verificación explícita directamente en la plantilla.

Pruébelo ahora mismo: abra el header.php de su tema activo, encuentre el lugar después de <body> y agregue un bloque de prueba con is_front_page(). Si todo funciona, habrá dominado las etiquetas condicionales de WordPress en cinco minutos.