Reutilizar el archive de un custom post type para sus taxonomías

chica-biblioteca-archivo custom post type

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

carpetas-archivo Reutilizar el archive de un custom post type

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.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.