Trusted WordPress tutorials, when you need them most.
Beginner’s Guide to WordPress
WPB Cup
25 Million+
Websites using our plugins
16+
Years of WordPress experience
3000+
WordPress tutorials
by experts

12 Most Useful WordPress Custom Post Types Tutorials

Editorial Note: We earn a commission from partner links on WPBeginner. Commissions do not affect our editors' opinions or evaluations. Learn more about Editorial Process.

Would you like to learn more about custom post types?

WordPress allows you to create custom types of content. Besides posts and pages, you might like to add other types of content to your website, such as products, reviews, or recipes.

In this article, we will share the 12 most useful WordPress custom post types tutorials.

12 Most Useful WordPress Custom Post Types Tutorials

What Are Custom Post Types in WordPress?

Custom post types are a type of content on your WordPress site that are not the default posts and pages. Custom post types are often added to a WordPress site using custom code or plugins.

For example, you can create custom post types for portfolios, testimonials, and products. Many WordPress plugins also use custom post types to store data on your website.

How can you use custom post types on your WordPress website?

As the largest free WordPress resource site for beginners, we’ve written a lot about custom post types over the years. Let’s take a look at the most useful custom post types tutorials here on WPBeginner.

1. Decide Whether You Need A Custom Post Type

Before you start creating custom post types or taxonomies on your WordPress site, it’s important to evaluate your needs. A lot of times you can get the same results with the default WordPress posts and pages.

With the help of built-in categories and tags, you can sort your content in many different ways. For example, with pages, you can set up a hierarchical layout of content with child pages. You can also set up subcategories.

Using the default WordPress features makes content management easier in many ways. For example, a custom post type wouldn’t appear on your blog page or in your post RSS feeds.

After looking at the default options, you may find that you don’t need custom post types after all.

If you are unsure, then refer to this guide about when you need a custom post type or taxonomy in WordPress.

2. Create Custom Post Types in WordPress

Once you decide that you do need a custom post type, you’ll need to create it. You can do this with a plugin, or manually by using code.

The Custom Post Type UI plugin makes it easy to create custom post types and is recommended for most users. You do this from the ‘Edit/Add Post Types’ page.

Create a New Custom Post Type With a Plugin

Alternatively, you can add a custom post type by pasting a code snippet into your theme’s functions.php file. The advantage of this method is your custom post types won’t disappear if the plugin is deactivated, but it’s only suitable if you’re comfortable handling code.

To learn more, see our guide on how to create custom post types in WordPress.

3. Create a Custom Post Types Archive Page

Adding custom post types in WordPress has become very easy thanks to the Custom Post Type UI plugin. However, many beginners have trouble displaying them on their websites.

To add a custom post type archive page, you first need to make sure that archives are enabled for your custom post type. In most cases they are, but if not then you can enable them in Custom Post Type UI’s advanced options or by using code.

CPT UI turn on archive

Now you can visit the custom post type archive page. Let’s say your custom post type is called ‘movies’ and you have SEO friendly permalinks enabled. Then your post type archive will be located at:

http://www.example.com/movies/

You’ll need to replace ‘example.com’ with your own domain name, and ‘movies’ with your custom post type name.

You can now add this archive page to your navigation menu. You can also customize it by adding a custom template to your WordPress theme or using a theme builder like SeedProd.

Edit your post type page

We show you how to do all of these things step by step in our guide on how to create a custom post types archive page in WordPress.

4. Add Custom Post Types to Your Main RSS Feed

By default, WordPress only includes your blog posts in your site’s main RSS feed. This means that your custom post type content won’t be visible to your main RSS feed subscribers.

You can easily include all publicly available post types into your main RSS feed by adding the following code to your theme’s functions.php file or a site-specific plugin.

function myfeed_request($qv) {
if (isset($qv['feed']))
$qv['post_type'] = get_post_types();
return $qv;
}
add_filter('request', 'myfeed_request');

However, you can use a different code snippet to only include specific custom post types.

For more detail on both methods, see our guide on how to add custom post types to your main WordPress RSS feed.

5. Make a Separate RSS Feed for Each Custom Post Type

WordPress automatically generates separate RSS feeds for different archive pages of your website, including custom post types.

Let’s say you have a custom post type called ‘movies’ on your website. We’ve already seen that you can view all content created in that post type by visiting the post type archive page.

https://example.com/movies

To view the RSS feed, all you need to do is add /feed/ to the custom post type archive URL.

https://example.com/movies/feed/

Alternately, you can also view the feed by adding the post type parameter to your main WordPress RSS feed. For example:

https://example.com/feed/?post_type=movies

Now that you know how to access the RSS feeds for any custom post type on your website, you can use that URL to create links to your custom post type feeds.

For instance, you may want to display an icon or plain text link on the custom post type archive page, so that your visitors can easily subscribe to those posts.

To learn how to do that, see our guide on how to make a separate RSS feed for each custom post type in WordPress.

6. Include Custom Post Types in Search Results

By default, WordPress will never show custom post types in its on-site search results. That means your visitors may miss out on some great content, and you’ll miss out on extra page views.

The easiest way to include custom post types in WordPress search is with the SearchWP plugin. It’s easy to use and lets you search content that isn’t included in the default WordPress search.

To include custom post types in your searches, simply click on the plugin’s ‘Sources & Settings’ button. Here you can put a checkmark next to each post type you wish to include in search results.

Including custom post types in WordPress search

You can also choose how important each custom post type is when displaying search results, and customize the search engine in other ways.

To learn how, see our step by step guide on how to include custom post types in WordPress search results.

7. Create a Search Form for Custom Post Types

You can also create a custom search form that will only show results from your custom post type. For example, if you have a custom post type called ‘movies’, then you can create a special movie search form that only returns movies in the search results.

This kind of custom search helps your visitors view more pages and spend more time on your website. This will give off positive WordPress SEO signals like lower bounce rate and increased dwell time.

You can create an advanced search form for custom post types using the SearchWP plugin. It allows you to create a second search engine that will only search your custom post type. You can then create a custom search form that you can add to your posts or sidebar.

For more details, see our guide on how to create an advanced search form in WordPress for custom post types.

8. Add Categories to a Custom Post Type

By default, WordPress categories can only be used to organize posts, not custom post types.

You could create a custom taxonomy to organize your custom posts, but what if you want to use the same categories you use for your blog posts?

The easiest way to associate your custom post type with categories is the Custom Post Type UI plugin. It adds a ’Taxonomies’ area in the settings for each custom post type.

Allowing Custom Post Types to Use Categories

Simply check the ‘Categories (WP Core)’ box and you will be able to use categories to organize your custom post types.

See our guide on how to add categories to a custom post type in WordPress to learn more.

9. Add Sticky Posts for Custom Post Types

The sticky posts feature in WordPress allows you to add featured posts. By default, it only works for blog posts and not for custom post types.

You can enable sticky posts for your custom post types as well by installing the Sticky Posts – Switch plugin. You simply check the box next to the custom post types that you wish to support this feature.

Visit the Settings » Sticky Posts - Switch Page to Configure the Plugin

Now when you visit the admin page for that custom post type, you will notice a new column where you can make posts sticky.

All you need to do is click the star next to the posts you wish to feature.

Click the Star Next to the Posts You Wish to Make Sticky

These sticky posts will be shown on your WordPress home page. To display sticky posts on your custom post type archive page as well, you’ll need to add some code to your theme files.

You’ll find all the details in our guide on how to add sticky posts in WordPress custom post type archives.

10. Add User Submitted Content to Custom Post Types

You may want to allow users to submit content for custom post types on your site, such as movie reviews or recipes. This is an easy way of adding extra content to your site.

One way to do this is by giving users access to your WordPress admin area and assigning them the author user role. Alternatively, you can add a submission form to your website.

You can do that using the WPForms plugin. You will need the Pro version to access the post submissions addon, and the provided ‘Blog Post Submission Form’ template makes creating the form simple.

By default, user submitted posts are saved as ‘Drafts’ pending review. You can change the post type in the form’s settings so content is submitted to a custom post type instead.

For more details, see our guide on how to allow users to submit posts to your WordPress site.

11. Switch or Convert Custom Post Types

You may come across situations where you will have to merge or convert custom post types. For example, you may want to move items from one post type to another.

Simply install and activate the Post Type Switcher plugin. Upon activation, you should go to the custom post type admin page and select the posts you want to move.

When you bulk edit the posts, you will notice there is a new drop down menu allowing you to change the post type for that item.

You can learn more in our guide on how to switch or convert custom post types in WordPress.

12. Add Custom Meta Boxes for Post Types

Custom meta boxes allow you to add custom fields to the WordPress post editor screen. This way you can create additional input fields for your post types.

The easiest way to create custom meta fields in WordPress is by using the Advanced Custom Fields plugin. Simply click the ‘Add New’ button on the Custom Fields page.

After that, you should follow the on-screen instructions to create a group of custom fields to add to your custom post type.

For further details, see our step by step guide on how to add custom meta boxes in WordPress posts and post types.

We hope this tutorial helped you learn some cool tricks for custom post types in WordPress. You may also want to see our ultimate WordPress security guide, or check out our list of tips on how to speed up WordPress performance.

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.

Disclosure: Our content is reader-supported. This means if you click on some of our links, then we may earn a commission. See how WPBeginner is funded, why it matters, and how you can support us. Here's our editorial process.

Editorial Staff

Editorial Staff at WPBeginner is a team of WordPress experts led by Syed Balkhi with over 16 years of experience in WordPress, Web Hosting, eCommerce, SEO, and Marketing. Started in 2009, WPBeginner is now the largest free WordPress resource site in the industry and is often referred to as the Wikipedia for WordPress.

The Ultimate WordPress Toolkit

Get FREE access to our toolkit - a collection of WordPress related products and resources that every professional should have!

Reader Interactions

16 CommentsLeave a Reply

  1. Syed Balkhi says

    Hey WPBeginner readers,
    Did you know you can win exciting prizes by commenting on WPBeginner?
    Every month, our top blog commenters will win HUGE rewards, including premium WordPress plugin licenses and cash prizes.
    You can get more details about the contest from here.
    Start sharing your thoughts below to stand a chance to win!

  2. Jiří Vaněk says

    Thank you for the overview. I’m still learning and familiarizing myself with custom post types as many people have referred to them when I needed to solve something. Each article like this one immensely helps me further my understanding of the concept and potential of custom post types.

  3. Scott R. Godin says

    One thing I see missing from many tutorials is the part where you add a Custom Options/Settings page to your Custom Post Type so you have a set of global settings that are specific to that post type (rather than a general admin settings page) and intended to be used only by that post type.

    most of the tutes I’ve found in this regard stop at echo ”; echo ‘Here is where the form would go if I actually had options.’; echo ”;

    and naturally that’s one of the things I’m most interested in (the other being in how you use the settings within your post type’s shortcode or widget) :-)

  4. Phil Long says

    I was wondering how ti implement many to many relationships between custom taxonomies and whether facetted search plugins support them?

    • Sydney says

      If you want to implement many to many relationship, you are stretching wordpress too far. You will get better mileage with a framework like rails, djangoor express

  5. Prateek says

    I want to know How can we exclude a custom post type from our rss feed..All my download pages are showing up in the rss feed..

  6. Wondell says

    How can I get WordPress posts to behave like Facebook and other social networks where you can just take a web link and paste it in the message field and in a matter of sections it will show a thumbnail or other information from the site?

  7. Bjarni says

    Hi WpBeginner, by chance dod you use CPT UI plugin on this site?

    CPT UI plugin looks good, save having to manual set this up in a site that needs CPT and Taxonomies.

  8. Phil Hoyt says

    good read, I use CTP’s on a daily basis and relationships between the two can be tricky, I’ve used Post2Posts and Advance Custom Fields also has some Relationship values, but usually leave me with some features to be desired. I look forward to trying CPT-onomies.

    • Mark says

      CPT UI can be a little tricky. CPT-onomies works pretty well too. They both take a little patience and digging to find out how they works. I was able to create a movie site importing from omdb. It would add the actors, etc as taxonomies (wp_add_object_terms & wp_set_object_terms) then used ACF to use that information. An example would be an actors page (cpt-axonomy) and selecting the movies they have been in.

Leave a Reply to Scott R. Godin Cancel reply

Thanks for choosing to leave a comment. Please keep in mind that all comments are moderated according to our comment policy, and your email address will NOT be published. Please Do NOT use keywords in the name field. Let's have a personal and meaningful conversation.

WPBeginner Assistant
How can I help you?

By chatting, you consent to this chat being stored according to our privacy policy and your email will be added to receive weekly WordPress tutorials from WPBeginner.