Creando una plantilla personalizada de página de blog de la manera correcta

4 ene 2017, 05:04:23
Vistas: 95.1K
Votos: 17

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?

1
Comentarios

Supongo que el problema original ya está resuelto hace tiempo, pero solo quería decir que leer el código fuente de los plugins me ha enseñado mucho. Si encuentras un plugin en el directorio de WP.org, puedes hacer clic en la pestaña de desarrolladores para ver el código directamente desde el navegador y ver cómo funciona.

rtpHarry rtpHarry
12 feb 2020 18:00:47
Todas las respuestas a la pregunta 3
1
19

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.

  1. Editar directamente el index.php para modificar el índice del blog. Esta no es una buena opción porque index.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
  2. 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.
  3. Crear un front-page.php, home.php y index.php en tu tema. El front-page será la página de inicio del tema. home será por defecto tu índice de blog y index 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.

17 jul 2018 23:30:57
Comentarios

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

Pixelsmith Pixelsmith
10 ene 2020 20:21:11
3

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

4 ene 2017 05:28:52
Comentarios

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.

Ryan Coolwebs Ryan Coolwebs
4 ene 2017 07:26:27

@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.

iguanarama iguanarama
4 ene 2017 09:23:30

Sí, creo que usar la función del personalizador es probablemente la mejor manera de hacer esto. Puedo verificar las opciones del personalizador y luego recuperar la parte de plantilla correspondiente.

Ryan Coolwebs Ryan Coolwebs
4 ene 2017 09:44:14
2

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.

4 ene 2017 09:40:39
Comentarios

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.

Krzysiek Dróżdż Krzysiek Dróżdż
18 mar 2018 19:27:16

No es realmente incorrecto per se, solo que el OP malinterpretó por qué la gente tiende a hacerlo de esta manera

Orun Orun
17 jul 2018 23:32:18