Como Criar Post Type (posts personalizados) com Categorias Personalizadas no WordPress

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.

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.

permalink para o post type

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