¿Necesito usar The Loop en las páginas?


8

Estoy escribiendo mi primer tema de WordPress y tengo una pregunta sobre el uso de The Loop en las plantillas de página. Las plantillas de página que he visto siguen básicamente el mismo patrón (ejemplo de Twenty Twelve):

<?php while ( have_posts() ) : the_post(); ?>
<?php get_template_part( 'content', 'page' ); ?>
<?php comments_template( '', true ); ?>
<?php endwhile; // end of the loop. ?>

Pero una página solo tendrá una publicación asociada, por lo que iterar a través de las publicaciones parece innecesario. Mi plantilla de página es más legible y parece funcionar bien:

<?php
the_post();
the_title('<h1>', '</h1>');
the_content();
?>

¿Es esta una buena practica? ¿Hay alguna desventaja?

Respuestas:


5

De acuerdo con la Guía del tema , se deben usar bucles completos, incluso en plantillas individuales.

Se deben usar bucles completos en todas las plantillas. Simplemente llamar the_post()a una plantilla como single.phpo page.phpno es suficiente.

Entonces, sí, es una buena práctica usar bucles completos.


9

El único problema potencial (editar: funcional) que veo es que la loop_endacción no se llamará si no se llama have_posts()después de la última the_post(), por lo que no se ejecutará nada conectado a esa acción.

En la práctica, lo he estado haciendo de esa manera en temas de cliente a medida y nunca he encontrado un problema, pero depende de qué complementos se puedan usar y de si conectan o no algo loop_end.


De acuerdo con la Guía del tema , se deben usar bucles completos, incluso en plantillas individuales. "Deben usarse bucles completos en todas las plantillas. Simplemente llamar a the_post () en una plantilla como single.php o page.php no es suficiente". Entonces, sí, es una buena práctica usar bucles completos.
Dave Romsey

Probablemente deberías agregar eso como respuesta. es necesario si desea que su tema sea aceptado y distribuido en WP.com u org.
Milo

Muy bien, gracias. Voy a. Pensé que lo cubriste con tu respuesta, así que pensé que solo lo complementaría con ese dato. Nunca había pensado en el punto de acción loop_end que mencionaste. Buena llamada allí.
Dave Romsey

Buena pregunta, entiendo y de acuerdo con la documentación, el bucle es obligatorio en todos los archivos de plantilla, pero creo que ambas respuestas no explican POR QUÉ. ¡Específicamente por qué es necesario ejecutar the_post () dentro de page.php ya que este archivo no debe mostrar ninguna publicación!
GyRo

1
@GyRo una página es un tipo de publicación. Es necesario porque configura los datos que las etiquetas de plantilla necesitan para funcionar correctamente.
Milo
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.