Voici une partie du code d'un de mes projets pour configurer une structure similaire pour les permaliens (même slug de base pour le type de message et les archives de taxonomie), veuillez noter les valeurs des paramètres 'has_archive' et 'rewrite' des deux messages type et taxonomie:
add_action( 'init', 'register_my_post_types' );
function register_my_post_types() {
register_post_type( 'movie',
array(
....
'has_archive' => 'movies',
'rewrite' => array(
'slug' => 'movies/%mv_category%',
'with_front' => false
),
'taxonomies' => array(
'mv_category',
),
)
);
register_taxonomy(
'mv_category',
array(
'movie'
),
array(
...
'hierarchical' => true,
'rewrite' => array(
'slug' => 'movies',
'with_front' => false,
'hierarchical' => false
)
)
);
) // end of create_my_post_types function
add_filter('post_type_link', 'filter_post_type_link', 10, 2);
function filter_post_type_link($link, $post)
{
if ($post->post_type != 'movie')
return $link;
if ($cats = get_the_terms($post->ID, 'mv_category'))
$link = str_replace('%mv_category%', array_pop($cats)->slug, $link);
return $link;
}
Ensuite, vous pouvez accéder à la catégorie «Documentaire» de type de publication de film avec cette URL:
site.com/movies/documentary/
et «Film A» de la catégorie «Documentaire» sera:
site.com/movies/documentary/movie-a/
REMARQUE: il est important d'enregistrer la taxonomie après le type de publication, car les règles de réécriture de permalien sont générées dans WordPress.