Página estática de inicio no muestra the_content

2 abr 2013, 03:51:42
Vistas: 17.3K
Votos: 3

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?

0
Todas las respuestas a la pregunta 2
3
10

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:

  1. Usas have_posts() para verificar que tienes contenido de publicación. Puedes usar una cláusula else para proporcionar contenido por defecto si lo deseas.
  2. Recorres ese contenido usando while(have_posts())
  3. Ejecutas the_post() para configurar la variable $post y también para incrementar el contador del loop. Intenta hacerlo sin the_post() y obtendrás un bucle infinito. Esta es la parte más crítica que faltaba en tu código.
  4. 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

2 abr 2013 04:03:26
Comentarios

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

dragonfeet2012 dragonfeet2012
2 abr 2013 18:41:55

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 micheal65536
19 ene 2016 22:54:21

Técnicamente eso puede ser cierto Michael, pero vas a crear todo tipo de malos hábitos y confusión con esa recomendación.

s_ha_dum s_ha_dum
19 ene 2016 23:11:09
0

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().

2 abr 2013 04:02:56