Show Custom Post Types in Year and Month Archives
Makes yearly, monthly and daily archives also list custom post type entries, such as recipes or events, not just blog posts.
Opens WPIDE on
Code
// Content types to list on year, month and day archives besides posts.
// Empty = every public custom post type that has its own archive.
$wpide_date_archive_types = array();
add_action( 'pre_get_posts', function ( $query ) use ( $wpide_date_archive_types ) {
if ( is_admin() || ! $query->is_main_query() || ! $query->is_date() || $query->get( 'post_type' ) ) {
return;
}
$types = $wpide_date_archive_types;
if ( ! $types ) {
foreach ( get_post_types( array( 'public' => true, '_builtin' => false ), 'objects' ) as $type ) {
if ( ! empty( $type->has_archive ) ) {
$types[] = $type->name;
}
}
}
if ( $types ) {
$query->set( 'post_type', array_values( array_unique( array_merge( array( 'post' ), $types ) ) ) );
}
} );
Notes
Leave the list empty to include every public custom post type that has an archive, or name the exact types.
How to add this snippet
- Install WPIDE on your WordPress site (it is free) and open Code Snippets.
- Use snippet above adds it from the library in one click. Or copy the code into a new snippet with the same code type.
- It is added inactive: review the code and settings, then switch it on.