Do you want to learn how to easily create custom post types in WordPress? Custom post types transform a WordPress site from aΒ blogging platformΒ into a powerful Content Management System (CMS).
Basically, they allow you to go beyond posts and pages by creating different content types for your website.
In this article, weβll show you how to easily create custom post types in WordPress. Weβll teach you two methods and you can choose one that looks easier to you.
What is Custom Post Type in WordPress?
Custom post types are content types likeΒ posts and pages. Since WordPress evolved from a simple blogging platform into a robust CMS, the term post stuck to it. However, a post type can be any kind of content.
By default, WordPress comes with these post types:
- Post
- Page
- Attachment
- Revision
- Nav Menu
You can create your own custom post types and call them whatever you want.
For instance, if you run a movie review website, then you would probably want to create a movie reviews post type. This post type can have different custom fields and even its own custom category structure.
Other examples of post types are Portfolio, Testimonials, Products, etc.
ManyΒ popular WordPress pluginsΒ already use custom post types to store data on your WordPress website. The following are a few top plugins that use custom post types.
- WooCommerceΒ β Adds a product custom post type to your WordPress site.
- WPFormsΒ β Creates a wpforms post type to store all your forms
- MemberPressΒ β Adds a memberpressproduct custom post type
When do I need a custom post type?
Check out our article aboutΒ when do you really need custom post types or taxonomies in WordPress.
Also take a look at pluginthemehub Deals and Glossary sections. These are custom post types that we created to keep these sections separate from our daily blog articles. It helps us better organize our website content.
You will also notice that we are usingΒ custom taxonomiesΒ for them instead of categories or tags.
That being said, letβs take a look at how to easily create custom post types in WordPress for your own use.
Method 1. Creating a Custom Post Type β The Easy Way
The easiest way to create a custom post type in WordPress is by using a plugin. This method is recommended for beginners because it is safe and super easy.
The first thing you need to do is install and activate theΒ Custom Post Type UIΒ plugin. Upon activation, the plugin will add a new menu item in your WordPress admin menu calledΒ CPT UI.
Now go toΒ CPT UI Β» Add NewΒ to create a new custom post type.
First, you need to provide a slug for your custom post type. ThisΒ slugΒ will be used in the URL and in WordPress queries, so it can only contain letters and numbers.
Below that, you need to provide the plural and singular names for your custom post type.
Next, you can optionally click on the link that says βPopulate additional labels based on chosen labelsβ. Doing so will fill in the rest of the label fields down below.
Scroll down to the βAdditional Labelsβ section and from here you can provide a description for your post type and change labels.
First, you need to provide a slug for your custom post type. ThisΒ slugΒ will be used in the URL and in WordPress queries, so it can only contain letters and numbers.
Below that, you need to provide the plural and singular names for your custom post type.
Next, you can optionally click on the link that says βPopulate additional labels based on chosen labelsβ. Doing so will fill in the rest of the label fields down below.
Scroll down to the βAdditional Labelsβ section and from here you can provide a description for your post type and change labels.
For instance, you can choose not to make a post type hierarchical like pages or reverse chronological like posts.
Below the general settings, you will see the option to select which editing features this post type would support. Simply check the options that you want to be included.
Finally, click on the βAdd Post Typeβ button to save and create your custom post type.
Thatβs all, you have successfully created your custom post type. You can go ahead and start adding content.
We will show you how to display your custom post type on your website later in this article.
Creating a Custom Post Type Manually
The problem with using a plugin is that your custom post types will disappear when the plugin is deactivated. Any data you have in those custom post types will still be there, but your custom post type will be unregistered and will not be accessible from theΒ admin area.
If you are working on a client site and do not want to install another plugin, then you can manually create your custom post type by adding the required code in your themeβsΒ functions.phpΒ file or in aΒ site-specific pluginΒ (See:Β Custom Post Types Debate functions.php or Plugin).
First, we will show you a quick and fully working example so that you understand how it works. Take a look at this code:
What this code does is that it registers a post type ‘movies’Β with an array of arguments. These arguments are the options of our custom post type.
This array has two parts, the first part is labeled, which itself is an array. The second part contains other arguments like public visibility, has archive, slug, and show_in_rest enables block editor support.
Now letβs take a look at a detailed piece of code that adds more options to your custom post type.
As you can see, we have added many more options to the custom post type with this code. It will add more features like support for revisions, featured image, custom fields, and more.
We have also associated this custom post type with a custom taxonomy called genres.
You may also notice the part where we have set the hierarchical value to be false. If you would like your custom post type to behave like Pages, then you can set this value to true.
Another thing to be noticed is the repeated usage of twentytwenty string, this is called text-domain. If your theme isΒ translation ready, and you want your custom post types to be translated, then you will need to mention text domain used by your theme.
You can find your themeβs text domain inside style.cssΒ file in your theme directory. The text domain will be mentioned in the header of the file.
Displaying Custom Post Types on Your Site
WordPress comes with built-in support for displaying your custom post types. Once you have added a few items into your new custom post type, it is time to display them on your website.
There are a couple of methods that you can use, each one has its own benefits.
Displaying Custom Post Type Using Default Archive Template
First, you can simply go toΒ Appearance Β» MenusΒ and add a custom link to your menu. This custom link is the link to your custom post type.
Displaying Custom Post Types on The Front Page
One advantage of using custom post types is that it keeps your custom content types away from your regular posts. However, if you would like them to display among your regular post, then you can do so by adding this code into your themeβs functions.php file or a site-specific plugin:
Donβt forget to replaceΒ movies
Β with your custom post type.
Querying Custom Post Types
If you are familiar with the coding and would like to run loop queries in your templates, then here is how to do that (Related:Β What is a Loop?).
By querying the database, you can retrieve items from a custom post type.
$args = array( ‘post_type’ => ‘movies’, ‘posts_per_page’ => 10 );
$the_query = new WP_Query( $args );
?>
<?php if ( $the_query->have_posts() ) : ?>
<?php while ( $the_query->have_posts() ) : $the_query->the_post(); ?>
<h2><?php the_title(); ?></h2>
<div class=”entry-content”>
<?php the_content(); ?>
</div>
<?php endwhile;
wp_reset_postdata(); ?>
<?php else:Β ?>
<p><?php _e( ‘Sorry, no posts matched your criteria.’ ); ?></p>
<?php endif; ?>
In this code, first, we have defined the post type and posts per page in the arguments for our new WP_Query class.
After that, we ran our query, retrieved the posts and displayed them inside the loop.
Displaying Custom Post Types in Widgets
You will notice that there is a defaultΒ widgetΒ in WordPress to display recent posts, but it does not allow you to choose a custom post type.
What if you wanted to display the latest entries from your newly created post type in a widget? There is an easy way to do this.
First thing you need to do is install and activate theΒ Ultimate Posts WidgetΒ plugin. Upon activation, simply go toΒ Appearance Β» WidgetsΒ and drag and drop the Ultimate Posts widget to a sidebar.
This powerful widget will allow you to show recent posts from any post types. You can also display post excerpts with a read more link or even show a featured image next to post title.
Configure the widget by selecting the options you want and by selecting your custom post type. After that save your changes and see the widget in action on your website.
More Advance Custom Post Type Tweaks
There is so much more you can do with your custom post types. You can learn to add yourΒ custom post types in main RSS feedΒ or create aΒ separate feed for each custom post type.
For more hacks, see our list of theΒ most useful WordPress custom post types tutorials.
If youβre looking for a no-code solution to customize your custom post type archive pages, then we recommend taking a look at aΒ WordPress page builder pluginΒ likeΒ Beaver BuilderΒ orΒ DiviΒ because they both can help you do that.
We hope this article helped you learn how to create custom post types in WordPress. You may also want to see our guide on how toΒ increase your website trafficΒ with practical tips.
If you liked this article, then please subscribe to ourΒ YouTube ChannelΒ for WordPress video tutorials. You can also find us onΒ TwitterΒ andΒ Facebook.