¿Por qué las plantillas de temas están organizadas como archivos PHP de múltiples puntos de entrada en lugar de reutilizar el index.php de su tema?

2

Comencé a desarrollar mi propio tema en las últimas dos semanas (y extrajo la funcionalidad de WP aquí y allá en el último año), y encuentro que la estructura de las plantillas de WP es tremendamente redundante.

Aunque eso sí, técnicamente, el blog comienza en un lugar superior para cargar la funcionalidad WP, el objeto principal WP_Query y cierta preparación de variables globales. No entiendo por qué todos los temas con los que me he topado hasta ahora dividen el archivos de plantilla como:

  • 404.php;
  • archive.php;
  • index.php;
  • single.php;
  • page.php;
  • search.php;
  • ... etc;

Esos archivos básicamente duplican una gran cantidad de código PHP para obtener el encabezado, la barra lateral y el pie de página.

¿No sería más limpio tener un (1) archivo index.php que incluya el Encabezado , Barra lateral , Pie de página ... . y dentro del archivo index.php , ¿podría decidir cómo mostrar el contenido?

No estoy seguro de entender la necesidad de tener archivos separados.

Si necesita cambiar el título en su etiqueta <head> , ¿por qué no usar el poder de buffer de salida ( ob_start() y ob_end_clean() ) para obtener las publicaciones primero / la página? / la publicación única / los resultados de búsqueda ... ¿Hay problemas de rendimiento con esta técnica?

¿Podría tener problemas si deseo que mi tema sea compatible con dispositivos móviles y legible por lectores de fuentes RSS ?

-------------- EDITAR:

Traigo esta pregunta porque existen métodos PHP que detectan en qué sección está visitando el usuario (por ejemplo, is_single() , is_page() , is_archive() , is_home() , etc ...) y yo me gustaría saber si se podrían usar para alcanzar un punto central para mi archivo index.php .

    
pregunta bigp 01.11.2011 - 15:36

2 respuestas

3

Los archivos de plantillas de temas se organizan de esta manera debido a la Jerarquía de plantillas de WordPress . Debido a que todos los archivos de plantillas primarias finalmente retroceden a index.php , ciertamente es posible usar solo el archivo de plantilla principal index.php . Existen ventajas y desventajas al utilizar cualquiera de los métodos.

En términos generales, la utilidad / eficiencia de la definición de archivos de plantillas es inversamente proporcional a la complejidad contextual del tema. Si la salida de tu Tema no cambia según el contexto, como se define en la Jerarquía de la Plantilla, entonces usar solo un archivo index.php tiene mucho sentido. Sin embargo, tratar de implementar resultados cada vez más complejos y específicos al contexto se vuelve cada vez más difícil usando solo etiquetas de plantillas condicionales basadas en consultas (por ejemplo, is_single() , is_archive() , is_category() , is_404() , etc.) dentro de index.php .

Sin embargo, esta es una mala idea:

  

Si necesita cambiar el título en su etiqueta <head> , ¿por qué no usar el poder de buffer de salida ( ob_start() y ob_end_clean() ) para obtener las publicaciones primero / la página? / la publicación única / los resultados de búsqueda ... ¿Hay problemas de rendimiento con esta técnica?

No hay necesidad de búfer de salida. Debe utilizar uno de los siguientes métodos:

  1. El gancho de filtro the_title para cambiar wp_title() output contextualmente
  2. Pase una variable definida contextualmente directamente a la etiqueta de plantilla wp_title()
respondido por el Chip Bennett 01.11.2011 - 15:45
2

Puedes usar un solo index.php para crear tu tema de WordPress. todo lo que necesita es un style.css e index.php (junto con el pie de página y el encabezado) todo depende del desarrollador de temas. Lo hice mucho para el diseño de bloques clásicos de estilo antiguo, pero hoy en día, al diseñar complejos temas de CMS y revistas; El uso de diferentes archivos según Jerarquía de plantillas de WordPress hace que las cosas sean mucho más simples.

La personalización se vuelve mucho más fácil para los novatos que no están familiarizados con las funciones de PHP pero son buenos en CSS / XHTML.

    
respondido por el Mehmet 01.11.2011 - 15:49

Lea otras preguntas en las etiquetas