Incluir Custom Post Types en archives.php de tu sitio web WordPress

¿Cómo agregar Custom Post Types en nuestro template de archivos?
La plantilla archives.php es una plantilla de página que se utiliza para mostrar una web de archivos.
La diferencia con archive.php es que esta última se utiliza para mostrar archivos de categoría, fecha, autor, etiqueta, taxonomía y tipo de publicación personalizada.
El template archives.php solo muestra el contenido del tipo ‘post’, pero puedes modificarlo para incluir tipos de publicación personalizados.
Simplemente hay que agregar este código al archivo functions.php (hacer backup al modificar un archivo siempre. No nos hacemos responsables de lo que pueda ocurrir con tu sitio web)
function namespace_add_custom_types( $query ) {
if( is_category() || is_tag() && empty( $query->query_vars['suppress_filters'] ) ) {
$query->set( 'post_type', array(
'post', 'nav_menu_item', 'nombre-de-tu-custom-post-type'
));
return $query;
}
}
add_filter( 'pre_get_posts', 'namespace_add_custom_types' );
Pero podemos personalizarlo aún más!
Incluyendo ‘nav_menu_item’ podemos lograr que nuestro menú no desaparezca!
function namespace_add_custom_types( $query ) {
if( is_category() || is_tag() && empty( $query->query_vars['suppress_filters'] ) ) {
$query->set( 'post_type', array(
'post', 'nav_menu_item', 'nombre-de-tu-custom-post-type'
));
return $query;
}
}
add_filter( 'pre_get_posts', 'namespace_add_custom_types' );
¿Y si queremos agregar el buscador?
También podemos hacerlo!
function searchAll( $query ) {
if ( $query->is_search ) {
$query->set( 'post_type', array( 'post', 'nombre-de-tu-custom-post-type'));
}
return $query;
}
add_filter( 'the_search_query', 'searchAll' );
Para este último punto es indispensable que nuestro Custom Post Type tenga habilitado ‘publicly_queryable’ => true
Así nuestro template de archivos será totalmente personalizable y nuestro sitio web en WordPress tendrá las funcionalidades que deseamos.