web-dev-qa-db-fra.com

Obtenir des archives mensuelles pour un type de message personnalisé

Je sais que c'est un sujet assez courant, mais je n'arrive pas à résoudre le problème que j'ai. Toute aide est grandement appréciée, je fais tourner mes roues à ce stade.

À l’aide du plug-in UI Custom Post Type, j'ai créé des types de post personnalisés (je vais utiliser "blog" dans cet exemple). J'ai défini has_archive => true et j'ai également utilisé un plugin appelé Custom Post Type Archives pour que ma pagination fonctionne correctement. Jusqu'à présent, mes liens permanents, balises, catégories et pagination fonctionnent. Cependant, le problème est lorsque j'essaie d'utiliser la fonction wp_get_archives. Je comprends que cela ne récupère pas les fichiers CPT. J'ai donc utilisé la fonction fournie avec le plug-in Archives d'archives de type personnalisé (wp_get_custom_post_archives). Selon la façon dont je Tweak les arguments, il crache soit un 404, soit il charge les archives, mais affiche seulement toutes les entrées (pas seulement celles spécifiques au mois sélectionné). Idéalement, je veux juste qu'il affiche les archives mensuelles.

<?php wp_get_post_type_archives('blog');

Jetez un oeil ici: http://www.metropoliscreative.com/coding/w/blog/

J'ai utilisé cela pour enregistrer le type de message et je pense l'avoir fait correctement. Pas sûr de ce que je fais mal à ce stade.

register_post_type('blog', array(   
        'label' => 'Blog',
        'description' => 'Blog Entries',
        'public' => true,
        'show_ui' => true,
        'show_in_menu' => true,
        'capability_type' => 'post',
        'hierarchical' => false,
        'rewrite' => array(
            'slug' => 'blog'),
        'has_archive' => true,
    'query_var' => true,
    'supports' => array('title','editor','excerpt','trackbacks','custom-fields','comments','revisions','thumbnail','author','page-attributes',),
    'taxonomies' => array('category','post_tag',),
    'labels' => array (
      'name' => 'Blog',
      'singular_name' => 'Blog',
      'menu_name' => 'Blog',
      'add_new' => 'Add Blog',
      'add_new_item' => 'Add New Blog',
      'edit' => 'Edit',
      'edit_item' => 'Edit Blog',
      'new_item' => 'New Blog',
      'view' => 'View Blog',
      'view_item' => 'View Blog',
      'search_items' => 'Search Blog',
      'not_found' => 'No Blog Found',
      'not_found_in_trash' => 'No Blog Found in Trash',
      'parent' => 'Parent Blog',
    ),) );
3
Redlist

Vous pouvez utiliser le crochet getarchives_where de wp_get_archives () function

Ajoutez cette fonction à votre functions.php:

function Cpt_getarchives_where_filter( $where , $r ) {

  $post_type = 'blog';
  return str_replace( "post_type = 'post'" , "post_type = '$post_type'" , $where );
}

Ensuite, quand vous voulez votre archive mensuelle, mettez ceci:

add_filter( 'getarchives_where' , 'Cpt_getarchives_where_filter' , 10 , 2 );
wp_get_archives();
remove_filter('getarchives_where' , 'Cpt_getarchives_where_filter' , 10 );
3
Bainternet