Đây là một phần mã từ một trong các dự án của tôi để thiết lập cấu trúc tương tự cho permalinks (cùng một loại sên cho cả loại bài đăng và lưu trữ phân loại), xin lưu ý các giá trị của tham số 'has_archive' và 'viết lại' của cả bài loại và phân loại:
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;
}
Sau đó, bạn có thể truy cập danh mục 'Tài liệu' của loại bài đăng Phim với url này:
site.com/movies/documentary/
và 'Phim A' của thể loại 'Phim tài liệu' sẽ là:
site.com/movies/documentary/movie-a/
LƯU Ý: Điều quan trọng là phải đăng ký phân loại sau loại bài đăng, vì các quy tắc viết lại permalink thứ tự được tạo trong WordPress.