Register custom post type

add_action( 'init', 'my_theme_custom_post' );
function my_theme_custom_post() {
    register_post_type( 'cpt',
        array(
            'labels' => array(
                'name' => __( 'CPTs' ),
                'singular_name' => __( 'CPT' )
            ),
            'supports' => array('title', 'editor', 'custom-fields', 'thumbnail', 'page-attributes'),
            'public' => true
        )
    );
}

 

Register custom taxonomy

function my_theme_custom_post_taxonomy() {
    register_taxonomy(
        'cpt_cat',  
        'cpt',                  
        array(
            'hierarchical'          => true,
            'label'                 => 'CPT Category',  
            'query_var'             => true,
            'show_admin_column'     => true,
            'rewrite'               => array(
                'slug'              => 'cpt-category', 
                'with_front'    => true 
                )
            )
    );
}
add_action( 'init', 'my_theme_custom_post_taxonomy');