The register_post_type() WordPress PHP function registers a custom post type in your WordPress installation.
Usage
register_post_type( $post_type, $args );
Example:
Input:
register_post_type( 'book', array(
'labels' => array(
'name' => __( 'Books' ),
'singular_name' => __( 'Book' ),
),
'public' => true,
'has_archive' => true,
));
Output: A custom post type ‘Book’ with plural label ‘Books’ and archive support.
Parameters
$post_type(string) (required): The post type key (maximum 20 characters). Must contain only lowercase alphanumeric characters, dashes, and underscores.$args(array|string) (optional): An array or string of arguments for registering the post type.
More information
See WordPress Developer Resources: register_post_type()
Examples
Register a basic custom post type ‘Movie’
This example registers a custom post type called ‘Movie’ with plural label ‘Movies’ and public visibility.
function create_movie_post_type() {
register_post_type( 'movie',
array(
'labels' => array(
'name' => __( 'Movies' ),
'singular_name' => __( 'Movie' )
),
'public' => true,
)
);
}
add_action( 'init', 'create_movie_post_type' );
Register a custom post type ‘Event’ with custom arguments
This example registers a custom post type ‘Event’ with custom arguments, including a custom menu icon.
function create_event_post_type() {
register_post_type( 'event',
array(
'labels' => array(
'name' => __( 'Events' ),
'singular_name' => __( 'Event' ),
),
'public' => true,
'menu_icon' => 'dashicons-calendar-alt',
)
);
}
add_action( 'init', 'create_event_post_type' );
Register a hierarchical custom post type ‘Guide’
This example registers a hierarchical custom post type ‘Guide’, which behaves similarly to the default ‘Page’ post type.
function create_guide_post_type() {
register_post_type( 'guide',
array(
'labels' => array(
'name' => __( 'Guides' ),
'singular_name' => __( 'Guide' ),
),
'public' => true,
'hierarchical' => true,
)
);
}
add_action( 'init', 'create_guide_post_type' );
Register a custom post type ‘Product’ with custom taxonomy ‘Category’
This example registers a custom post type ‘Product’ with a custom taxonomy ‘Category’.
function create_product_post_type() {
register_post_type( 'product',
array(
'labels' => array(
'name' => __( 'Products' ),
'singular_name' => __( 'Product' ),
),
'public' => true,
'taxonomies' => array( 'category' ),
)
);
}
add_action( 'init', 'create_product_post_type' );
Register a custom post type ‘Portfolio’ with support for post thumbnails and custom fields
This example registers a custom post type ‘Portfolio’ with support for post thumbnails and custom fields.
function create_portfolio_post_type() {
register_post_type( 'portfolio',
array(
'labels' => array(
'name'