Habitualmente cuando estoy desarrollando un proyecto WordPress necesito crear algún custom post type o tipo de entrada personalizada. Son muy útiles y versátiles, ya sea para crear eventos, un sistema de diapositivas para el slider, entradas para una página de glosario, …
Obviamente, igual que para las entradas por defecto de WordPress está el archivo home.php los custom post type necesitan su propio código de archivo y esto hace necesario y recomendable crear su custom-post-type-archive.php
Además en la mayoría de los casos suele hacerse necesario o conveniente crear taxonomías propias del custom post type para las cuales después hay que crear archivos taxonomy-archive.php por cada una.
Total, que puedo acabar con un montón de archivos tipo …-archive.php
Y eso sin contar con los single-custom-post-type.php para la vista singular de cada entrada custom post type, que en varios proyectos es innecesaria porque sólo se necesita que los resultados se vean en la lista.
Así fue como empecé a plantearme si no podría reutilizar el archive de un custom post type para sus taxonomías o para evitarme la vista single del mismo. Primero tiraba de crear archivos part para llamarlos desde los archive y así reutilizar el código pero seguía teniendo que crear los archive y quería poder ahorrarme archivos innecesarios.
Buscando un poco encontré una forma cómoda que me permitía reutilizar el archive de un custom post type para todos sus relacionados y evitar tener varios archivos iguales o tremendamente parecidos.
Suponiendo un custom post type llamado «ms-articulo» que tiene 2 taxonomías: «tipo-articulo» y «marca-articulo», con este código las 3 vistas de archivo se cargarían sobre archive-articulo.php
add_filter( 'template_include', 'ms_articulo_archive_page_template', 99 );
function ms_articulo_archive_page_template( $template ) {
if ( is_tax( 'tipo-articulo' ) || is_tax( 'marca-articulo' ) ) {
$new_template = locate_template( array( 'archive-articulo.php' ) );
if ( '' != $new_template ) {
return$new_template;
}
}
return$template;
}
Incluso se puede añadir al
if( is_tax( 'tipo-articulo' ) || is_tax( 'marca-articulo' ) )
un
|| is_singular( 'ms-articulo' )
para que la vista de single redirija al archivo con todas las entradas.
Vale23
Hola Josu, me pareció interesante, pero…¿Las taxonomias como las defines jerarquicas o como etiqueta?
Saludos desde México
JSoleguia
Hola, Vale
pues eso dependerá del proyecto y lo que vaya a hacer después con las taxonomías.
Normalmente suelo definirlas ‘hierarchical’ => false, a menos que vaya a necesitar lo contrario para un filtro de búsqueda o algo similar.
Un saludo.