web-dev-qa-db-fra.com

Custom Post Type Archives par date avec Custom Permalink

Je suis un peu embêté à faire en sorte que le permalien personnalisé pour l'archive de type de message personnalisé (CPT) fonctionne.

J'ai enregistré mon CPT 'press_release' comme suit:

add_action('init', 'press_release_post_type_init');
function press_release_post_type_init() {
  $labels = array(
    'name' => _x('Press Releases', 'post type general name'),
    'singular_name' => _x('Press Release', 'post type singular name'),
    'add_new' => _x('Add New', 'Press Release'),
    'add_new_item' => __('Add New Press Release'),
    'edit_item' => __('Edit Press Release'),
    'new_item' => __('New Press Release'),
    'view_item' => __('View Press Release'),
    'search_items' => __('Search Press Releases'),
    'not_found' =>  __('No press release found'),
    'not_found_in_trash' => __('No press release found in Trash'), 
    'parent_item_colon' => ''
  );
  $args = array(
    'labels' => $labels,
    'public' => true,
    'publicly_queryable' => true,
    'show_ui' => true,
    'has_archive' => 'press-release',
    'rewrite' => array('slug' => 'press-release/%year%/%postname%','with_front' => false),
    'query_var' => true,
    'capability_type' => 'post',
    'hierarchical' => false,
    'show_in_nav_menus' => false,
    'menu_position' => 20,
    'supports' => array(
      'title',
      'editor',
      'author',
      'revisions'
    )
  );
  register_post_type('press_release', $args);
}

Pour le moment, si je vais à l'URL http://mysite.press-release, j'arrive au modèle archive-press_release.php, qui est correct.

Cependant, j'aimerais que mon permalien d'archive CPT soit du type press-release/%year%

J'ai essayé de spécifier la structure permalien ci-dessus lors de l'enregistrement de CPT:

'has_archive' => 'press-release/%year%'

Cependant, avec cette structure de lien permanent lorsque je passe à http://mysite.press-release ou http://mysite.press-release/2011 dans les deux cas, je suis redirigé vers le modèle index.php et non vers l'archive.

Qu'est-ce que j'ajoute pour que WordPress comprenne que press-release/%year%, lien permanent avec une partie année facultative, constitue en fait les modèles d'archive?

J'apprécierais vraiment toute aide! J'espère que c'est possible.

Je prévoyais de construire mon propre code SQL dans le archive-press_release.php pour obtenir les enregistrements de la bonne année.

Merci beaucoup, Dasha

5
dashaluna

Voici la solution:

  1. Installer Archives de type de message personnalisé plugin
  2. Allez dans Paramètres-> Archives de type de post
    1. Supprimer l'option de base de l'URL (laisser vide)
    2. Modifiez le modèle de modèle en archive-{POST_TYPE}.php
    3. Cochez votre type de message personnalisé et cliquez sur Enregistrer
  3. Réécrivez/enregistrez votre structure permalien personnalisée

Maintenant, vos liens press-release/%year% et press-release/%year%/%month% devraient fonctionner.

0
chodorowicz