In real world, taxonomy is the classification of something
In WordPress, taxonomy is a way of grouping posts (or custom post) based on a relationship. In default WordPress, you have the taxonomy category and tags which are groups of the posts based on relationship.
You can create taxonomy called recipe, book etc
There are two types of taxonomy in WordPress default installation
They are:
1 Category
2 Tags
You can use two methods to create taxonomy in WordPress.
You have a function called register_taxonomies() in WP codex to create new taxonomies
register_taxonomy( string $taxonomy, array|string $object_type, array|string $args = array() )
You have got several parameters for this function, the first one is the name of the taxonomy.
Add the following piece of code to your function.php file in your theme and you can see the new taxonomy appear under the post menu of the admin section.
Create taxonomy and associate with existing post
type
add_action( 'init', 'create_taxonomy_topics', 0 );
function create_taxonomy_topics() {
// Labels for the GUI
$labels = array(
'name' => _x( 'Topics', 'taxonomy general name' ),
'singular_name' => _x( 'Topic', 'taxonomy singular name' ),
'search_items' => __( 'Search Topics' ),
'popular_items' => __( 'Popular Topics' ),
'all_items' => __( 'All Topics' ),
'parent_item' => null,
'parent_item_colon' => null,
'edit_item' => __( 'Edit Topic' ),
'update_item' => __( 'Update Topic' ),
'add_new_item' => __( 'Add New Topic' ),
'new_item_name' => __( 'New Topic Name' ),
'separate_items_with_commas' => __( 'Separate topics with commas' ),
'add_or_remove_items' => __( 'Add or remove topics' ),
'choose_from_most_used' => __( 'Choose from the most used topics' ),
'menu_name' => __( 'Topics' ),
);
// Now register the non-hierarchical taxonomy name topic just like ta and category
register_taxonomy('topics','post',array(
'hierarchical' => false,
'labels' => $labels,
'show_ui' => true,
'show_in_rest' => true,
'show_admin_column' => true,
'update_count_callback' => '_update_post_term_count',
'query_var' => true,
'rewrite' => array( 'slug' => 'topic' ),
));
}
You can see the taxonomy Topic under the Posts section