Descubre en este tutorial cómo usar la misma plantilla de archivo para mostrar distintos Custom Post Types (CPT), en un tema de WordPress.
La plantilla de archivo es la encargada de mostrar el listado de entradas.
Es muy habitual que un tema de bloques incluya la plantilla archive.html
, que es la encargada de su diseño. Y esta plantilla suele utilizar el bloque de listado de contenidos (query loop block), en el que tienes que elegir el tipo de entrada que quieres que se muestre, por ejemplo, posts.
Esto tiene la limitación de que, si tienes varios tipos de entrada (podcast, masterclass, tutoriales…) tienes que duplicar la plantilla y renombrarla (archive-podcast.html
…).
Pero si tienes muchos Custom Post Types, los cuales quieres mostrar con el mismo diseño en la página de archivo, puedes usar un poco de código para evitar la duplicación de la plantilla.
Vamos a ver cómo:
Pasos para utilizar la misma plantilla de archivo para diferentes CPT
1. Crea el diseño de la plantilla archive.html
Ve al «Editor del sitio» y elige la plantilla archive.html
(si no existe la puedes crear) y añade el bloque de listado de contenidos y crea el diseño que quieres.
Si tienes dudas, en este tutorial te explico a fondo como funciona el bloque y sus posibilidades.
2. Añade la lógica que permite filtrar el contenido
Añade el siguiente snippet al fichero functions.php o a tu plugin de funcionalidades:
Para ver este código y los otros 2055 snippets de esta web,
identifícate o suscríbete aquí.
En este código usar el filtro query_loop_block_query_vars
junto con el condicional is_post_type_archive
para indicar las entradas de qué Custom Post Type se cargarán en cada caso.
Con el ejemplo anterior indicas que, si la página de archivo es de podcast, el bloque de listado de contenido debe filtrar solo las entradas de este CPT. Pero puedes ampliar el condicional para que incluya todos los CPT que necesites.
Esta estrategia puede ahorrarte bastante tiempo en una web con muchos CPTs, permitiendo que los cambios que realices en un solo fichero se muestren en todas las páginas de archivo.
Conclusión
Si tienes una instalación con muchos CPTs y no quieres tener que crear una plantilla de archivo para cada una de ellas, ahora sabes cómo conseguirlo con un poco de código.
¿Alguna duda? Te leo en los comentarios.
Y si quieres darme una sugerencia para próximos tutoriales, déjamela en el formulario de contacto. Ventajas de ser suscriptor. 😉