[WordPress] Ajouter les Custom Post Types à wp_get_archives()

WordPress propose par défaut une fonction qui permet d’accéder aux archives des blogs : wp_get_archives().

Mais cette fonction à un défaut majeur depuis les dernières versions de la plateforme. Les Custom Post Types ne sont pas inclus dans les archives, seuls les billets de type « Post » le sont.

 
Voici un petit hack, à placer dans le fichier functions.php de votre thème, qui permet d’inclure les types de billets de votre choix dans les archives.

add_filter( 'getarchives_where' , 'custom_getarchives_where_filter' , 10 , 2 );
function custom_getarchives_where_filter( $where , $r ) {
        $args = array( 'public' => true , '_builtin' => false );
        $output="names"; $operator="and";
        $post_types = get_post_types( $args , $output , $operator );
        $post_types = array_merge( $post_types , array( 'post','video','surleweb' ) );
        $post_types = "'" . implode( "' , '" , $post_types ) . "'";
        return str_replace( "post_type="post"" , "post_type IN ( $post_types )" , $where );
}

Il vous suffit de remplacer les types que vous avez développé, à la ligne 6 (là où j’ai mis pour ma part video et surleweb.

via