Hier ist ein Teil des Codes aus einem meiner Projekte zum Einrichten einer ähnlichen Struktur für Permalinks (gleicher Basis-Slug sowohl für den Post-Typ als auch für das Taxonomie-Archiv). Bitte beachten Sie die Werte der Parameter 'has_archive' und 'rewrite' beider Posts Typ und 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;
}
Dann können Sie mit dieser URL auf die Kategorie "Dokumentarfilm" des Typs "Filmbeitrag" zugreifen:
site.com/movies/documentary/
und "Film A" der Kategorie "Dokumentarfilm" sind:
site.com/movies/documentary/movie-a/
HINWEIS: Es ist wichtig, die Taxonomie nach dem Beitragstyp zu registrieren, da in WordPress Regeln für das Umschreiben von Permalinks in der Reihenfolge generiert werden.