Что вы, вероятно, ищете, так это добавление таксономий к вашему пользовательскому типу записи: https://codex.wordpress.org/Function_Reference/register_taxonomy
Вот пример использования.Предполагая, что ваши жанры будут иерархическими, то есть они могут быть вложенными.Они эквивалентны категориям в сообщениях (например, Триллер> Действие, Триллер> Ужасы)
Вторая часть предназначена для неиерархической таксономии, то есть она не может быть вложенной.Это эквивалентно тегам в сообщениях.(например, #Steven Spielberg)
// hook into the init action and call create_movie_taxonomies when it fires
add_action( 'init', 'create_movie_taxonomies', 0 );
// create two taxonomies, genres and directors for the post type "movie"
function create_movie_taxonomies() {
// Add new taxonomy, make it hierarchical (like categories)
$labels = array(
'name' => _x( 'Genres', 'taxonomy general name', 'textdomain' ),
'singular_name' => _x( 'Genre', 'taxonomy singular name', 'textdomain' ),
'search_items' => __( 'Search Genres', 'textdomain' ),
'all_items' => __( 'All Genres', 'textdomain' ),
'parent_item' => __( 'Parent Genre', 'textdomain' ),
'parent_item_colon' => __( 'Parent Genre:', 'textdomain' ),
'edit_item' => __( 'Edit Genre', 'textdomain' ),
'update_item' => __( 'Update Genre', 'textdomain' ),
'add_new_item' => __( 'Add New Genre', 'textdomain' ),
'new_item_name' => __( 'New Genre Name', 'textdomain' ),
'menu_name' => __( 'Genre', 'textdomain' ),
);
$args = array(
'hierarchical' => true,
'labels' => $labels,
'show_ui' => true,
'show_admin_column' => true,
'query_var' => true,
'rewrite' => array( 'slug' => 'genre' ),
);
register_taxonomy( 'genre', array( 'movie' ), $args );
// Add new taxonomy, NOT hierarchical (like tags)
$labels = array(
'name' => _x( 'Directors', 'taxonomy general name', 'textdomain' ),
'singular_name' => _x( 'Director', 'taxonomy singular name', 'textdomain' ),
'search_items' => __( 'Search Directors', 'textdomain' ),
'popular_items' => __( 'Popular Directors', 'textdomain' ),
'all_items' => __( 'All Directors', 'textdomain' ),
'parent_item' => null,
'parent_item_colon' => null,
'edit_item' => __( 'Edit Director', 'textdomain' ),
'update_item' => __( 'Update Director', 'textdomain' ),
'add_new_item' => __( 'Add New Director', 'textdomain' ),
'new_item_name' => __( 'New Director Name', 'textdomain' ),
'separate_items_with_commas' => __( 'Separate directors with commas', 'textdomain' ),
'add_or_remove_items' => __( 'Add or remove directors', 'textdomain' ),
'choose_from_most_used' => __( 'Choose from the most used directors', 'textdomain' ),
'not_found' => __( 'No directors found.', 'textdomain' ),
'menu_name' => __( 'Directors', 'textdomain' ),
);
$args = array(
'hierarchical' => false,
'labels' => $labels,
'show_ui' => true,
'show_admin_column' => true,
'update_count_callback' => '_update_post_term_count',
'query_var' => true,
'rewrite' => array( 'slug' => 'director' ),
);
register_taxonomy( 'director', 'movie', $args );
}