How to use register_post_type() in WordPress

The register_post_type() function is a powerful tool in WordPress that allows you to create custom post types. These custom post types can be used to store and display a variety of content types, such as products, events, recipes, or any other type of content that you want to manage in your WordPress site.

Here is a step-by-step tutorial on how to use the register_post_type() function in WordPress:

  1. Open your theme’s functions.php file. This is where you will define your custom post type.
  2. Begin by defining an array of arguments for your custom post type. This will include things like the name, labels, and capabilities of the post type. Here’s an example:
$args = array(
'labels' => array(
'name' => __( 'Products' ),
'singular_name' => __( 'Product' )
'public' => true,
'has_archive' => true,
'menu_icon' => 'dashicons-cart'

In this example, we’re defining a custom post type called “Products”. We’re setting the public parameter to true, which means that the post type will be visible on the front-end of the site, and we’re setting has_archive to true, which will create an archive page for this post type. We’re also defining a custom icon for this post type using the menu_icon parameter.

  1. Now, you’re ready to register your custom post type using the register_post_type() function. Here’s an example:
add_action( 'init', 'create_custom_post_type' );
function create_custom_post_type() {
register_post_type( 'products', $args );

In this example, we’re using the add_action() function to add a new action to the WordPress init hook. This action will call the create_custom_post_type() function, which will register our custom post type using the register_post_type() function.

  1. Save your functions.php file and refresh your WordPress site. You should now see a new post type called “Products” in your WordPress admin menu.

Congratulations! You’ve just created a custom post type in WordPress using the register_post_type() function. From here, you can further customize your post type by adding custom meta boxes, taxonomies, and more.