souvent confronter à la même question, utilisation d’une page template pour lister mes custom type dans WordPress ou utiliser les Archives et comment bien le géré avec des contrainte de flexibilité pour le SEO. Il est conseillé de limiter l’utilisation du wp_query qui demande plus de ressource que le systéme standard d’utilisation des archives_{custome_type}.php
La solution ce trouve à la création du custom_post_type lors de la déclaration en utilisant la fonction register_post_type
Pour cette explication à travers l’exemple nous allons utilisez les arguments suivant “archive_has” et “rewrite”
1/ register_post_type sans argument :
register_post_type('lieux',
array(
'labels' => array(
'name' => __('lieux', TIL_TEXTDOMAIN),
'singular_name' => __('lieu', TIL_TEXTDOMAIN),
'menu_name' => __('Lieux', TIL_TEXTDOMAIN),
'all_items' => __('Tous les lieux', TIL_TEXTDOMAIN)
),
'supports' => array('title', 'editor', 'thumbnail', 'excerpt', 'revisions', 'post_tag'),
'public' => true,
'taxonomies' => array( 'post_tag' ),
)
);
Résultat :
2/ register_post_type avec l’argument “archive_has” à true :
register_post_type('lieux',
array(
'labels' => array(
'name' => __('lieux', TIL_TEXTDOMAIN),
'singular_name' => __('lieu', TIL_TEXTDOMAIN),
'menu_name' => __('Lieux', TIL_TEXTDOMAIN),
'all_items' => __('Tous les lieux', TIL_TEXTDOMAIN)
),
'supports' => array('title', 'editor', 'thumbnail', 'excerpt', 'revisions', 'post_tag'),
'public' => true,
'has_archive' => true,
'taxonomies' => array( 'post_tag' ),
)
);
Résultat :
3/ register_post_type avec les arguments “archive_has” à true et “rewrite” :
register_post_type('lieux',
array(
'labels' => array(
'name' => __('lieux', TIL_TEXTDOMAIN),
'singular_name' => __('lieu', TIL_TEXTDOMAIN),
'menu_name' => __('Lieux', TIL_TEXTDOMAIN),
'all_items' => __('Tous les lieux', TIL_TEXTDOMAIN)
),
'rewrite' => array(
'slug' => __('places', TIL_TEXTDOMAIN),
),
'supports' => array('title', 'editor', 'thumbnail', 'excerpt', 'revisions', 'post_tag'),
'public' => true,
'has_archive' => true,
'taxonomies' => array( 'post_tag' ),
)
);
Résultat :
4/ register_post_type avec les arguments “archive_has” à true et “rewrite” modification du arguments “name” :
register_post_type('lieux',
array(
'labels' => array(
'name' => __('Places', TIL_TEXTDOMAIN),
'singular_name' => __('lieu', TIL_TEXTDOMAIN),
'menu_name' => __('Lieux', TIL_TEXTDOMAIN),
'all_items' => __('Tous les lieux', TIL_TEXTDOMAIN)
),
'rewrite' => array(
'slug' => __('places', TIL_TEXTDOMAIN),
),
'supports' => array('title', 'editor', 'thumbnail', 'excerpt', 'revisions', 'post_tag'),
'public' => true,
'has_archive' => true,
'taxonomies' => array( 'post_tag' ),
)
);
Résultat :