WordPress – Create Custom Post Type By Code

To create custom post type in WordPress there are two ways. One way is to do it by plugin and Second is to create custom post type by the code itself.

Below is the code to create a custom post type “product” ( you can change it with yours ). Copy the lines of code below and put it into the file functions.php of the currently active theme.

function register_post_type_product() {
        $labels = array(
            'name'                => _x( 'Products', 'Post Type General Name', 'text_domain' ),
            'singular_name'       => _x( 'Product', 'Post Type Singular Name', 'text_domain' ),
            'menu_name'           => __( 'Products', 'text_domain' ),
            'parent_item_colon'   => __( 'Parent Product', 'text_domain' ),
            'all_items'           => __( 'All Products', 'text_domain' ),
            'view_item'           => __( 'View Product', 'text_domain' ),
            'add_new_item'        => __( 'Add New Product', 'text_domain' ),
            'add_new'             => __( 'Add New', 'text_domain' ),
            'edit_item'           => __( 'Edit Product', 'text_domain' ),
            'update_item'         => __( 'Update Product', 'text_domain' ),
            'search_items'        => __( 'Search Product', 'text_domain' ),
            'not_found'           => __( 'Not Found', 'text_domain' ),
            'not_found_in_trash'  => __( 'Not found in Trash', 'text_domain' ),
        );

        $args = array(
            'label'               => __( 'products', 'text_domain' ),
            'description'         => __( 'Product news and reviews', 'text_domain' ),
            'labels'              => $labels,
            'supports'            => array( ''title', 'editor', 'excerpt', 'author', 'thumbnail', 'comments', 'revisions', 'custom-fields', 'page-attributes'),
            'taxonomies'          => array('category', 'post_tag'),
            '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',
        );

        register_post_type( 'product', $args );
}
add_action('init','register_post_type_product');