Página estática de inicio no muestra the_content
Debo estar haciendo algo mal aquí.
Configuré mi sitio con una página de inicio estática usando front-page.php. Creé una página en el administrador con un título y seleccioné front-page.php en el menú desplegable de plantillas.
Mi título se muestra bien, pero the_content() no aparece.
No estoy haciendo nada especial como se muestra a continuación.
<?php
/*
Plantilla: Página de inicio
*/ ?>
<?php get_header(); ?>
<div class="content">
<div class="welcome_area">
<div class="welcome_area_title"><?php the_title('');?></div>
<div class="welcome_area_text">
<?php the_content(); ?>
</div>
¿Alguna idea de por qué no se muestra el contenido?

Realmente no tienes un Loop.
<?php get_header(); ?>
<div class="content">
<div class="welcome_area">
<div class="welcome_area_title"><?php the_title('');?></div>
<div class="welcome_area_text"><?php
if (have_posts()) {
while (have_posts()) {
the_post();
the_content();
}
} ?>
Lo que está ocurriendo es:
- Usas
have_posts()
para verificar que tienes contenido de publicación. Puedes usar una cláusulaelse
para proporcionar contenido por defecto si lo deseas. - Recorres ese contenido usando
while(have_posts())
- Ejecutas
the_post()
para configurar la variable$post
y también para incrementar el contador del loop. Intenta hacerlo sinthe_post()
y obtendrás un bucle infinito. Esta es la parte más crítica que faltaba en tu código. - Ahora que
the_post()
se ha ejecutado, tus etiquetas de plantilla de publicación deberían funcionar como se espera.
No edité demasiado tu código, pero también incluiría ese the_title
dentro del Loop, aunque parezca estar funcionando. Realmente debería estar dentro del Loop y no siempre funciona como se espera fuera de él.
Referencia
https://codex.wordpress.org/Class_Reference/WP_Query#Methods

Qué error tan tonto. No puedo creer que se me pasó eso, fue un día largo. Gracias por detectarlo.

Realmente no necesitas usar have_posts()
en front-page.php
; front-page.php
solo se usará si hay una entrada para mostrar. Así que puedes simplemente poner the_post()
y omitir las declaraciones if
y while
.

En primer lugar, si configuras tu página como página de inicio estática, no necesitas asociar la plantilla con la página, y la plantilla no necesita un encabezado. WordPress automáticamente utiliza la plantilla front-page.php
para una página de inicio estática, según la jerarquía de plantillas.
Para responder a tu pregunta, necesitas llamar primero a the_post()
para configurar las variables globales en las que se basa la función the_content()
.
