Add Categories to custom Post Type

to a Custom Post Type

In this article, we will show you how to add categories to a custom post type in WordPress. We will also show you how to display multiple post types on your category archive page.

The Plugin Method

For our beginner level users, we recommend using Custom Post Type UI plugin to create custom post types.

First you need to install and activate the Custom Post Type Ui plugin. For more details, see our guide on WordPress plugin.

Upon installation, you need to visit CPT UI » Add/Edit Post Types to create a new custom post type or edit an existing custom post type you created with the plugin.

Scroll down on the Advanced Options to the bottom and there you will see the Built in Taxonomies option. Check the box next to categories and save your custom post type.

Don’t forget to click on the save post type button to store your settings.

Manually Adding Categories to a Custom Post Type

If you created your custom post type by adding the code in your theme’s functions.php file, then you will have to modify the code to add category as supported taxonomy.

All you need to do is add this line in the arguments for your CPT.

‘taxonomies’ => array( ‘category’ ),

It is likely that you may already have this line in the existing code for your CPT with some other custom taxonomy in it. If you do, then you just need to add a comma after that and add category, like this:

‘taxonomies’ => array(‘topics’, ‘category’ ),

full example code

Here is a full example code where we have created a custom post type called books with support for built-in categories.

function custom_post_type() {

// Set UI labels for Custom Post Type

 $labels = array(
‘name’ => _x( ‘Books’, ‘Post Type General Name’, ‘twentythirteen’ ),
‘singular_name’ => _x( ‘Book’, ‘Post Type Singular Name’, ‘twentythirteen’ ),
‘menu_name’ => __( ‘Books’, ‘twentythirteen’ ),
‘parent_item_colon’ => __( ‘Parent Book’, ‘twentythirteen’ ),
‘all_items’ => __( ‘All Books’, ‘twentythirteen’ ),
‘view_item’ => __( ‘View Book’, ‘twentythirteen’ ),
‘add_new_item’ => __( ‘Add New Book’, ‘twentythirteen’ ),
‘add_new’ => __( ‘Add New’, ‘twentythirteen’ ),
‘edit_item’ => __( ‘Edit Book’, ‘twentythirteen’ ),
‘update_item’ => __( ‘Update Book’, ‘twentythirteen’ ),
‘search_items’ => __( ‘Search Book’, ‘twentythirteen’ ),
‘not_found’ => __( ‘Not Found’, ‘twentythirteen’ ),
‘not_found_in_trash’ => __( ‘Not found in Trash’, ‘twentythirteen’ ),


// Set other options for Custom Post Type

$args = array(
‘label’ => __( ‘books’, ‘twentythirteen’ ),
‘description’ => __( ‘Book news and reviews’, ‘twentythirteen’ ),
‘labels’ => $labels,
‘supports’ => array( ‘title’, ‘editor’, ‘excerpt’, ‘author’, ‘thumbnail’, ‘comments’, ‘revisions’, ‘custom-fields’, ),
‘hierarchical’ => false,
‘public’ => true,
‘show_ui’ => true,
‘show_in_menu’ => true,
‘show_in_nav_menus’ => true,
‘show_in_admin_bar’ => true,
‘menu_position’ => 5,
‘can_export’ => true,
‘has_archive’ => true,
‘exclude_from_search’ => false,
‘publicly_queryable’ => true,
‘capability_type’ => ‘page’,

// This is where we add taxonomies to our CPT

‘taxonomies’ => array( ‘category’ ),


// Registering your Custom Post Type

register_post_type( ‘books’, $args );


/* Hook into the ‘init’ action so that the function
* Containing our post type registration is not
* unnecessarily executed.

add_action( ‘init’, ‘custom_post_type’, 0 );

Don’t forget to replace books with the name of your own custom post type.

That’s all, we hope this article helped you add categories to your custom post type in WordPress