Neste exemplo vou criar posts personalizados para Livros e taxonomia gênero para as categorias.
1 – Configuração
Abra o arquivo function.php do tema e insira o código abaixo, altere a palavra livros e livro, seja maiúsculas ou minúsculas, para a mais adequada ao seu projeto.
/* -- Post Type - Livros -- */
function custom_post_type_livros() {
$labels = [
"name" => __( "Livros", "twentyseventeen" ),
"singular_name" => __( "Livro", "twentyseventeen" ),
];
$args = [
"label" => __( "Livros", "twentyseventeen" ),
"labels" => $labels,
"description" => "",
"public" => true,
"publicly_queryable" => true,
"show_ui" => true,
"delete_with_user" => false,
"show_in_rest" => true,
"rest_base" => "",
"rest_controller_class" => "WP_REST_Posts_Controller",
"has_archive" => true,
"show_in_menu" => true,
"show_in_nav_menus" => true,
"delete_with_user" => false,
"exclude_from_search" => false,
"capability_type" => "post",
"map_meta_cap" => true,
"hierarchical" => false,
"rewrite" => [ "slug" => "livros", "with_front" => true ],
"query_var" => true,
"menu_position" => 5,
"menu_icon" => "dashicons-book-alt",
"supports" => [ "title", "editor", "thumbnail", "excerpt", "trackbacks", "custom-fields", "comments", "revisions", "author", "page-attributes", "post-formats" ],
"taxonomies" => [ "genero" ],
];
register_post_type( "livros", $args );
}
add_action( 'init', 'custom_post_type_livros' );
Ainda no arquivo functions.php, cole o código abaixo para criar as taxonomias (categorias personalizadas). Onde está escrito gênero e gênero mude para a expressão que se encaixe ao seu projeto.
/* ------------------------------ Taxonomias - Genero -----------------------------*/
function custom_taxonomy_genero() {
/**
* Taxonomy: Gêneros.
*/
$labels = [
"name" => __( "Gêneros", "twentyseventeen" ),
"singular_name" => __( "Gênero", "twentyseventeen" ),
];
$args = [
"label" => __( "Gêneros", "twentyseventeen" ),
"labels" => $labels,
"public" => true,
"publicly_queryable" => true,
"hierarchical" => true,
"show_ui" => true,
"show_in_menu" => true,
"show_in_nav_menus" => true,
"query_var" => true,
"rewrite" => [ 'slug' => 'livros', 'with_front' => true, ],
"show_admin_column" => true,
"show_in_rest" => true,
"rest_base" => "genero",
"rest_controller_class" => "WP_REST_Terms_Controller",
"show_in_quick_edit" => true,
];
register_taxonomy( "genero", [ "livros" ], $args );
}
add_action( 'init', 'custom_taxonomy_genero' );
Salve e atualize a página, como resultado vai aparecer a opção “Livro” no menu lateral.
Você pode criar quantos Posts Types quiser, basta apenas fazer as alterações já faladas acima.
2 – Permalink
Faça a instalação do plugin Custom Post Type Permalinks.
Em Configurações / Permalinks desça até Permalink Settings for Custom Post Types e preencha com a taxonomia que neste caso é gênero.
Preencha como na imagem abaixo, /%genero%/, depois é só salvar.

Pronto agora você já poderá cadastrar suas taxonomias (categorias personalizadas) e seus posts personalizados.