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áusulaelsepara proporcionar contenido por defecto si lo deseas. - Recorres ese contenido usando
while(have_posts()) - Ejecutas
the_post()para configurar la variable$posty 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.
dragonfeet2012
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.
micheal65536
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().