Creando una plantilla personalizada de página de blog de la manera correcta
Quiero crear una nueva plantilla de página personalizada para la presentación de entradas del blog. Entiendo que cuando asignas una página para mostrar entradas a través de Ajustes > Lectura, WordPress asignará home.php para mostrar el contenido de esa página, siendo las entradas en una página. Además, la opción para asignar una plantilla de página en la vista de edición de página desaparece.
Actualmente muestra una vista predeterminada artículo por artículo. Quiero proporcionar otra opción para que el administrador seleccione una plantilla diferente que pueda mostrar los blogs en un diseño de cuadrícula o masonry. No estoy seguro de cómo hacer esto.
Podría hacerlo sin asignar la página para mostrar blogs en el área de administración de Ajustes > Lectura y luego permitir que el usuario administrador asigne la plantilla específica a la página usando el menú Atributos de página en la edición de página, pero según https://make.wordpress.org/themes/2014/06/28/correct-handling-of-static-front-page-and-custom-blog-posts-index-template/, esta es la forma INCORRECTA.
He intentado buscar soluciones en Google pero todo lo que encuentro son recomendaciones de plugins para usar. ¿Alguien podría indicarme algunos recursos útiles?

No olvides que WordPress fue diseñado principalmente como un CMS para blogs, por lo que cuando se trata del desarrollo de temas, los desarrolladores a menudo optan por un enfoque no estándar a cambio de la posibilidad de incluir más funciones.
Los desarrolladores de temas tienen tres opciones al abordar esto, una de las cuales (#2 a continuación) mencionaste.
Editar directamente el
index.php
para modificar el índice del blog. Esta no es una buena opción porqueindex.php
debería ser el respaldo en caso de que falte otra parte de tu plantilla.- Pros: rápido y fácil
- Contras: propenso a errores y va en contra de los principios de programación orientada a objetos
Crear una plantilla de página para el índice del blog. Como dijiste, muchos desarrolladores de temas eligen esta ruta porque es una forma rápida de darte control sobre el índice del blog, y en realidad te da la capacidad de probar diferentes plantillas de índice de blog (lo cual es útil al desarrollar un tema versátil).
- Pros: Versátil, permite construir un tema robusto
- Contras: pierdes la capacidad de llamar a la funcionalidad nativa de WordPress relacionada con el índice del blog.
Crear un
front-page.php
,home.php
yindex.php
en tu tema. Elfront-page
será la página de inicio del tema.home
será por defecto tu índice de blog yindex
será tu respaldo para todas las plantillas.- Pros: Limpio y aprovecha al máximo los objetos y métodos nativos de WordPress
- Contras: Limitado por WordPress: no es ideal para muchos de los tipos de temas ricos en opciones que se ven hoy en día
Personalmente prefiero la opción #2, porque la mayoría de mis proyectos de desarrollo en WordPress actualmente no son solo blogs: son sitios completos con una arquitectura de información profunda e interactividad compleja.

Documentación para esta funcionalidad: https://developer.wordpress.org/themes/basics/template-hierarchy/#home-page-display

Voy a cubrir varios aspectos en mi respuesta. :)
Si estás creando tu propio tema y quieres cambiar la presentación predeterminada de algunos tipos de páginas (por ejemplo, la página de archivo de categoría o una página de publicación de blog individual), entonces revisa el diagrama de la jerarquía de plantillas de WordPress. Muestra qué archivos en tu directorio de tema se utilizan para mostrar qué tipos de publicaciones.
Al tener un archivo php en tu tema que coincida con un archivo en esa jerarquía, WordPress lo usará automáticamente, como single.php
para mostrar una publicación individual. Si tienes un tema con ese archivo ya existente, obviamente puedes modificarlo y los cambios se reflejarán en el sitio.
Por otro lado, si deseas tener plantillas de página personalizadas pero solo quieres que un administrador pueda cambiarlas (en una base de publicación por publicación), entonces necesitas hacer algunas verificaciones de roles y capacidades; esta respuesta en StackExchange puede ser útil. (Todavía necesitarías crear esas plantillas de página personalizadas, consulta este artículo de Smashing Magazine).
De lo contrario, si quieres que un administrador elija de manera más global plantillas de página/publicación basadas en ciertos criterios, o que elija plantillas de página personalizadas para todo el sitio, entonces necesitarás agregar una opción en el área de administración a tu tema, y algún código personalizado en tu tema para mostrar la página correcta según esa opción. Agregar una opción al área de administración se puede hacer fácilmente con uno de los muchos plugins, pero también se puede hacer manualmente (consulta, por ejemplo, este artículo en SitePoint).

Gracias por tu respuesta. Estoy al tanto de cómo crear plantillas para páginas/entradas basadas en la jerarquía, pero no logro encontrar una forma de dar opciones de plantilla para la "Página de Índice de Entradas del Blog" que usa home.php (usando la misma terminología del diagrama que proporcionaste). Esto se configura cuando un usuario administrador elige una página para mostrar entradas en Panel > Ajustes > Lectura. Luego, asigna la página home.php/index.php. No encuentro una forma de hacer una plantilla alternativa sin DEJAR de asignar la página en Panel > Ajustes > Lectura.

@RyanCoolwebs Probablemente necesitarías agregar una opción de administrador a tu tema que permita elegir entre estilos de visualización para la página de índice de entradas del blog, y luego editar home.php para leer el valor de la opción y mostrar la variación de página apropiada.

Entiendo que quieres crear tu propia plantilla para mostrar las entradas del blog, ¿verdad?
Entonces sigue este procedimiento: crea un archivo PHP llamado blog-template.php
Dentro de ese archivo, coloca este código al principio de todo:
<?php
/*
* Template Name: Entradas del Blog
*/
?>
Luego, debajo del código anterior, copia todo el código de tu archivo index.php
o home.php
en esta nueva plantilla, guarda el archivo y ahora crea una página desde el panel de administración
. Por ejemplo, nombra esa página como "Blog"
. Ahora, en la parte derecha, selecciona la plantilla de página
que acabamos de crear llamada Entradas del Blog
desde el menú desplegable de plantillas.
Publica la página y ya estarás listo para tener tu propia página personalizada para mostrar tus publicaciones.
Avísame si necesitas algo más.

OK, entonces solo has reformulado la solución que el OP claramente indicó como incorrecta ;) Crear una plantilla de página y usarla como índice del blog no es el mejor enfoque, supongo.
