A Complete Guide To CPTs & Divi
Learn How To Use Our Custom Post Type Generator And How They Integrate with Divi
This tutorial will who you how to create and use custom post types in Divi! We are doing this because we have a new resource on our website! You can now generate custom post types and taxonomies using our free generator!
What Is A Custom Post Type
Pages and Posts are considered post types in WordPress, but we can also add our own custom post types. This will help you classify your content better and more seamlessly. A custom post type allows you to go beyond pages and posts and contain whatever type of content you would like based on your needs.
With our free generator, you can create your own custom post types in Divi and name them whatever you want. A custom post type can even have its own menu item in the WordPress dashboard for easy access, just like pages and posts.
Projects
When you install Divi, it comes with it’s own custom post type. I don’t know why they do this, but I guess it is there simply to show how a custom post type can be used and how it can interact with the Divi Theme and Builder.
Projects are used to create a portfolio, and you can use the Portfolio or Filterable Portfolio Modules to display those project post types on a page.
You can build the actual project page with Divi.
Products
Another custom post type that you may be familiar with is Products. This post type is created by Woocommerce. Products are their own post types with their own attributes and can have their own categories.
By default, Divi has built-in integration with WooCommerce, and comes with a great selection of Divi modules. You can build out the entire product page for example using Divi. All you have to do is enable the Divi Builder on products and you can build the layout however you want.
How To Use Custom Post Types In Divi
The big question remains. How do you use a custom post type in Divi? Thankfully Divi makes it super easy to integrate custom post types, and there are two main areas that have seamless integration with Divi.
Enable Divi Builder On Post Types
To enable the Divi Builder on post types, just go to Divi>Theme Options>Builder and you will land on the Post Type Integration tab. Then under Enable Divi Builder On Post Types you can toggle on or off the Divi Builder support for any post type.
Theme Builder Support
Another really great custom post type integration with Divi is in the Theme Builder. When you go to Divi>Theme Builder and assign a template, you can choose to assign a template to the custom post type pages just like any other post type.

Blog Module
You can display an archive of your custom post types in Divi in the blog module. Be sure to check out our tutorial on how to use custom post types in the Divi blog module.
How To Create A Custom Post Type In Divi
There are at least two ways to make a custom post type. You basically can choose to use a plugin, use a generator, or hire a developer.
Use A Plugin
If you want to use a plugin, you could check out Custom Post Type UI, Pods, or another similar plugin. These plugins provide an interface for you to enter the data. Just remember, this is not automatic, but manual. Just because it is a plugin does not mean it is easier. I honestly think our generator is easier.
Use A Generator (Recommended)
You may think that a plugin will be easier, but I disagree. You will end up following the same steps here as in a plugin, so you may as well have one less plugin on your site! Besides, learning is good for you and this will be fun! And our generator auto-populates the fields, which is super cool! You can access our custom post type generator for free.
How To Use Our Free Divi Custom Post Type Generator
As we said before, we have a new free resource on our website! You can now generate custom post types using our generator, which also works for custom taxonomies (which we will talk about in the next tutorial).
If you haven’t yet, be sure to keep our Custom Post Type Generator open in a new tab as we go along.
The rest of this post will be an explanation of each of the features of the generator. I’ll do my best to break it down into simple language.
General
Name (singular)
This is the singular name you want to call your custom post type.
Notice that when you type the name into the field, most of the other fields in the generator under the General and Labels sections auto-populalate!
Name (plural)
This is the plural form of the name.
Key
This is the main value that the code uses to reference the custom post type. This is usually a singular small case version of the name. This needs to be one word without any dashes or underscores.
Description
This is the description of the post type that may be useful in rare cases on an archive page. You might want to say what it does and why you are using it.
Hierarchy
A hierarchical post type can have a parent and one or more children. The pages post type in WordPress is a good example of a hierarchical post type. One page can be the parent of other pages, that can be parents of other pages in a hierarchical fashion.
Features
Supported Features:
Below is a list of the options you can choose to select based on your needs. Any item you select will be included. I’m not going to explain each of these since they are mostly self-explanatory. These are the fields that will be available on the custom post type, similar to how pages and posts.
- Title
- Excerpt
- Featured Image
- Custom Fields
- Revisions
- Post Formats
- WYSIWYG
- Author
- Trackbacks
- Comments
- Page Attributes
Taxonomies
You can choose to use the same categories and tags to organize your custom post types that you use for posts. Note that this will not give the new post type its own categories and tags. To do that, you would need to create custom taxonomies.
- Categories
- Tags
Custom Taxonomies
Besides categories and tags, you can also add your own taxonomies. Make sure the value or values you enter here match the “key” when you use the other tab to make the custom taxonomies. (Our guide on custom taxonomies will be linked here as soon as it is posted.)
Labels
This allows you to configure how each of the post types labels will appear. If you want to see this in action, just browse around your site and look at how this works for pages and posts. Our generator will add these automatically, but you can edit them as needed.
Menu Icon
The menu icon is the icon that shows up in the WordPress dashboard. As an example you can see that Posts uses a thumbtack icon. You can choose an icon from the list of WordPress dashicons avaible at this page. Then once you have selected an icon, enter the icon name into the input field, such as “dashicons-admin-post.”
Visibility
This allows you to configure how you would like your post type to appear in the back end of WordPress.
Public
This option changes the visibility of the WordPress custom post type to authors and visitors. Just keep this set to True to make it appear in the WordPress Dashboard.
Show in Navigation Menus
This sets whether the new custom post type items will be available in the WordPress navigation menus. Most likely you would want to to be set to True.
Show Admin UI
This determines where the custom post type is shown in places like the “+New” menu at the top of the WordPress back end. This should be set to True.
Show in Admin Menu
This determines where the custom post type is shown in the WordPress admin menu. This should be set to True.
Menu Position
This determines the position of the new custom post type name in the WordPress admin area navigation menu in relation ot the other default items that are there. You can select any option you want from the dropdown.
Options
This allows you to configure how you would like your post type to appear in the back end of WordPress. These settings are more for advanced users and developers, so you can usually leave them on the default setting.
Publicly Queryable
This is more of an advanced technical setting that determines whether queries for this post type can be performed from the front end. Just leave this set to True.
Exclude From Search
This setting is where you get to choose whether the new custom post type should appear in search results. So if someone uses a search widget or search module on your site, you can decided if you want to show your new post type in the search results.
Has Archive
This setting allows you to choose whether or not the custom post type will have a main archive page like https://yourdomain.com/custom-post-type/. Don’t foreget, you can use the Divi Theme Builder to design the archive page!
Export via WordPress Import/Export Tool
Use this setting to decide whether posts belonging to your custom post type can be exportable via the WordPress export tool.
Capabilities
This again is a technical setting, but basically it has to do with the ability of certain user roles to perform certain actions, like delete or edit posts. Most users can keep this set to Post.
Query Variable
This again is for advanced users. It allows you to control the query variable used to get posts of this type. This cannot be the same value as the key.
Rewrite Permalink
This advanced setting allows you to define the permalink structure of your posts when viewing the single post. For example, you may want to have a structure like www.yourdomain.com/something/custom-post-name. WordPress will set up a default structure based on your taxonomy name.
There you go! That’s how you can use our free generator to use custom post types in Divi. Be sure to watch the video above.
If you want to take this further, we have a lesson on custom post types and more in our Beyond The Builder course, so consider purchasing that if you build or manage websites with Divi and WordPress.
Great tutorial on how to create custom types but why would one want to? A use-case would be helpful in understanding the purpose of custom type (beyond products, that is).
Hi Dave,
I do mention quite throughout the video. It’s pretty much wide open, any time of content that you want to organize and display. books, reviews, testimonials, team members, portfolios, dogs, catalog, events, news, documentation, etc.
Hi Nelson, great tutorial. If I need to add more custom fields to my cpt do I need a plugin like advanced custom fields or is there another way you’d recommend to add them and when I do how do I display them on my post and archive e.g. category tag and icons etc
Thank you for this much expected tutorial. Since I need my CPT to have its own set of categories, I wonder when the next tutorial about taxonomies will come up.
You are welcome! You can find the tutorial here: https://www.peeayecreative.com/how-to-create-and-use-custom-taxonomies-in-divi/
Thank you!
Hi Nelson – great tool 🙂 I have created a CPT called ‘Documents’ and added categories for ‘Doctors’, ‘Nurses’ and Admin. When using the divi blog module I can filter by Documents, but the categories are not showing, so cannot filter further. Have I missed a step? Thanks
That sounds great, Tony. I don’t think you missed anything, sounds like you did it great. There is no way to use custom taxonomies in the blog module, so be sure to suggest that to ET!
This is exactly the problem i have.
Is there a way to fix this?
Please check my freebie here: https://www.peeayecreative.com/how-to-show-custom-post-types-by-taxonomies-in-the-divi-blog-module-free-download/
Thanks for a really nice tutorial! One question about the permalink structure part in the end: The URL for the archive is site.com/cats/ but the URL for a single cat post is site.com/cat/cat-name/ so I (or a search engine crawler) can’t go back in the structure by removing the last part of the permalink.
From a SEO and UX perspective, I would like the single cats to be under the archive structure, in this case site.com/cats/cat-name
How could I achieve that?
Hi Victor,
Just change the ‘rewrite’ => true, to ‘rewrite’ => [‘slug’ => ‘cats’], and make sure you have ‘has_archive’ => ‘cats’, as plural.
Hi, i created a CPT for pages with the generator but when i create a page with “no sidebar”, i have an error “page not found”, it works if put a sidebar. Is it possible to have an option fullwitdh page? One more thing : is it possible to not displayed the title as the standard Divi pages (with the dont diplayed option at the top) ? thanks for your help.
Hey Eric,
Why not use the Divi Builder for the page? It’s been years since I used the actual blank Divi pages. This would also solve your second question.
hi, i think my explanations are not cleared i don’t speak english very well, sorry.(french). First, i generate a CPT called “Cats” with capabilities “pages” (i need a CPT for pages, not posts), i create a mu-plugins (or i copy to the child theme functions.php), i activate Divi in the Divi options for the CPT. Now i create a new page “mycat” in the cpt Cats. I activate divi builder on the page “mycat”. I select “no sidebar” (i want a full page, its not a post). I publish “my cat”. After that if i display the page, I have an error “page not found” (wordpress error msg). If i create a CPT “like post”, no problem to create and display but i have the wordpress title, no options in the page to not displayed the title as Divi standard posts.
ok, i make an another test, the page displayed with the link but the preview in worpdress page edit don’t Work. But I still have the standard title WordPress before the divi builder zone, have you a tips to deactivate it please ? The page don’t displayed in fullwidth too (container fix 1080px, no fullwith option).. thanks for your help. PS : i buy the divi responsive helper, very useful.
Hi Eric,
Thanks for explaining, but the part I’m still confused on, if you are using the Divi Builder, then the settings for sidebar are totally irrelevant and not used. In the Divi Builder or that page, just add a sidebar module if needed.
Hi Nelson, ok sorry to be not clear and take your time Just an example. I need to create this cpt to regroup my pages exams instead to mix them with others pages to organize my content.
Thanks for your help.
Hi Nelson, to complete your excellent tutorial and tool to generate CPT, i think it will be interesting to explain how to create a template for the CPT, for page or post (based on the model single-page for example) to avoid standard displayed elements of WordPress (title, sidebar..), finally its the object of my multiple posts and what i don’t understand from the begin, sorry 🙂
Hi Eric,
That’s where the Divi Theme Builder comes in. Have you tried that? You should absolutely check it out if you havn’t used it yet.
OK, thanx i understand, so we must create a template on theme builder for the cpt with a content module. A last thing, my last question : i can’t preview the cpt page, when i click on the wp preview button i have the msg wp error “page not found, no results”, but the absolute link work, have you the same problem ? thank you very much for your help.
hello nelson, I have created a CPT using your generator, turned on Divi Builder for my new CPT, and updated permalinks but the page build with Divi builder appears as a standard post, NOT a page build with Divi builder. her is a link if you need to see it: https://wp-template.joygrafika.com/job/273-stewart-house-renovations/
Hey Paul,
The URL of shared, that page is built on Divi builder that I can see on my end.
To resolve the error “page not found”
Update the permalinks
Hi I get an error when adding the code to functions.php file “Parse error: syntax error, unexpected ‘-‘, expecting ” on the “function register_cpt_results-2020() {”
line
Hi Mamdouh,
I believe this is because you have a dash in your file, “results-2020” so just change all references of that to something like “results2020”
Thanks
Hi David, this tutorial is fantastic. I have a question. After creating and using custom post types I’m going to create fields with the ACF plugin.
That content, I would like to be completed by users who register on the site. I want to create a specific interface for these users that looks customized on the frontend
With what plugin can I do this?
Hello Matias,
I don’t have any experience with that sort of thing. You would need some dedicated member or profile builder plugin.
Hi, Great Tutorial.
I have created a custom post type and it works fine, but the issue is viewing the custom posts in a list or blog format.
I have tried to use the theme builder to create a template I can use to pull the posts back in a blog list format, but I have not been able to get that to work.
From reading the comments would I be right in thinking that the blog module will not recognise the custom posts to pull them in.
If this is right is there anyway of pulling them back in a list or grid format.
I thought I hade done so well creating the custom posts, but now it looks like they will be no use to me.
P.S. like the look of your course. Any taster vdeo clips to tempt me to sign up????
Hi Andy,
Custom post types definitely work in the Divi Blog module! They have for a while, I did a post on it when it came out: https://www.peeayecreative.com/how-to-display-custom-post-types-in-the-divi-blog-module/
Which course are you asking about? You can send me a message if you want!
Yes you are right, My BAD!!!
Too many long nights! I have it working now.
Excellent tutorial and tool for generating CPT’s! I ran into an error with my execution of things. I created the CPT “Messaging Guide.” When I generated the code and added to functions.php file I received a syntax error on line 10. I eventually figured out that it didn’t like the dash in between “messaging-guide” and just changed the CPT title to “Guide” which resolved the issue.
Thanks Adam, yes we have that noted in the guide about the dash, so glad you saw that and got it resolved!
This is a game-changer! So excited to put it into use. Only thing I can’t seem to do is this: when I use the Divi builder to edit my new post, I don’t have the usual features in the ‘Divi Page Settings’. Example: Fullwidth layout and don’t show post title. Have you come across this? Any tips on how to make it happen? Thanks again, actual angel!
Hi Fran,
I’m not quite sure what you mean. You mentioned the Divi Page settings, but I think you are referring to the WordPress backend. Is that correct? I don’t know how to make those items show, but I can honestly say that in all my life I have never actually used those settings, so I’m thinking they are pretty useless. But maybe I’m missing something.
Hey Nelson! Thanks for the reply. Maybe this test link will show what I mean: https://hemlow.franholder.co.uk/resources/energy-performance-certificates-epc-display-energy-certificates-dec-and-a-c-inspections The content isn’t fullwidth. Normally to change this, I’d go into the Divi Page Settings in the WordPress backend and change the Page Layout to Fullwidth. However, I’m not getting this option for the posts in my newly created post type. Any tips so super appreciated!
On other blog posts, one of the options here would be ‘Fullwidth’ which normally fixes the problem.
I understand, but I’m confused as well. Are you not using the Divi Builder on the page? If you use that, it will be fullwidth.
Hey Nelson, yeah it’s odd isn’t it? I’m using the Divi Builder but it’s framing it in a box. Never mind, ended up using CSS to force it into full-width! Thanks again for this How To 🙂
With this method, can we build a restaurant menu that would be simple to update, like ACF plugin does? I just tried, but I can’t wrap my head around how to get the custom post content onto a page.
Hi Dave,
Nice tuto’, thank you !
I’ve /blog/%postname% set for my blog. But now that i’ve CPT like “press” my urls are /blog/press/%postname%.
Have you any clue how to remove /blog/ from CPT but keep it for my blog…
Maybe i’ve missuse permalink rewrite ? Tried to figure out but not the right way…
Thank for your work !
Hi Terry,
If you have it hard set like that in the permalinks then I’m not sure. I’m not an expert on that though, so maybe check some other sources about permalinks.
Hello Nelson (idk why i called you Dave, my bad !!)
Thank you for your answer, i’ve found the solution over night and i’m glad to share it here :
just replace the rewrite true or false by :
‘rewrite’ => array(
‘slug’ => ‘yourslug’,
‘with_front’ => false,)
Really great tutorial. Thank you, Miller
I have one question about the use of the DIVI blog module and CPTs…
It is possible to do the following:
Hi Jacob,
That’s a very common feature request of the blog to be able to choose custom post type taxonomies, but there is not way to do it. You could always ask Elegant Themes about it!
Is there a way to add custom categories to custom post types? For example, if I have a video series… it would be great to have the series and all of the videos in that series grouped together in the blog module.
Hi Ryan,
That is something you should bug Elegant Themes about, as this is a very, very common feature request and the more they get is how they prioritize new features.
Hey Nelson,
Thank you for providing this resource and the fantastic CPT generator. How would one register multiple custom post types? If I pull the code from the generator and place two instances of it in my Functions.php i receive a 502 error.
Thanks,
Laurence
Hi Laurence,
502 is a server error, not related to this. You can certainly use multiple custom post types, just make sure they are unique of course with a different key.
Could it be the fact that I’m using the Name: Case Study? Every time I add the generated code for this CPT my site will throw an error. If I remove all of my PHP code except for the “Case Study” CPT, my site throws an error.
As a test, I registered the CPT “Books” and added it to my PHP. The site loaded just fine. Could there be an issue when generating a two word CPT?
Thanks,
Laurence
Yes, that is probably it, change the key to one word without any dashes or underscores and it will work.
Hi! I’m creating a product catalog website (not online shop), so I wanted to create two custom post types – products and recipes. I watched your video and used the generator and successfully got them on my website. However, I am having trouble with editing the post types. If I click on “add new product” I can input information in the traditional WordPress blog form, but what I want to do is use a particular divi layout, which I already created and assigned in the Divi Theme builder to use for products. So if I click “use divi builder” everything disappears except the title, and the right hand of the screen says there is a fatal error. If I go to “all products” I can click “preview” and I can see the correct divi layout. I can then click “enable visual builder” and I can edit it that way. But if I click “edit product” it brings me back to the blank page. So I can’t adjust the back end, categories, tags, anything. I tried going to the Divi Theme options and click “enable classic editor”, and now it seems to work for “recipes” but not for “products”. Is this because the post type “products” is usually linked to e-commerce and WordPress is confused that I don’ have an e-commerce plugin installed? Do I have to make a different new instead of “product” for my post type? Or is there a different work-around so I can still use the word “product” which I prefer? Thank you so much for your time!
If you are using Products as a name of Custom Post Type and you also have Woocommerce Products then also I don’t think that WordPress might be getting confused between the two so please try using the Products as a name of your CPT.
If you want to create a template of your Custom Post Type in Divi then please create a Template using the Divi Theme Builder. Go to Divi > Theme Builder and add a new template. When you click add new template plus icon there are a lot of options that you will see so as you have two things with Products name, when you will scroll down you will see two Products heading and in that you need to check the box under the second heading to assign this template to your CPT products.
Please try this out and let us know if it helps. 🙂
Wow, I just found your tutorials and I am blown away! Love the whole set up of the presentation, from theory to practice. Really brilliant. I may not have found what I was looking for exactly but I have immediately subscribed to keep ongoing nuggets trundling into my email! Keep up the fab job!
Thank you so much Britt! I appreciate you taking the time to comment, I definitely plan to continue this have tons of new content on the way every week!
Hi there Nelson,
really like the tutorial and the generator, it worked out great for me. However, i hit a roadblock when i tried to customize the category page using the blog module in the Divi Theme Builder. I can pull some stuff like the category name dynamicly. But i´m not able to display only posts with a certain category, it only allows me to display all posts. When i try to set it to a specific category there´s a “no results found” notification. Any idea on how i could resolve this?
Best regards and keep up those awesome tutorials!
Victor
Hello, Nelson, thank you for the tutorial. I am having trouble though trying to edit my new post type with the Divi Builder. I used the generator to create the code to add to the functions.php file to create a new post called “Products”. This works correctly, and in WordPress I know have the option to create Product posts. When I choose Add New, it creates a new post in the default editor. When I click on the Use Divi Builder button I get a Fatal Error: Fatal error: Uncaught Error: Call to undefined function et_builder_wc_get_page_layouts() at line 743 in the Divi functions.php. This is a test site using WordPress 5.9.2 and Divi 4.16.0. I have NO plugins installed. The Use Divi Builder button works fine with the default posts type, but not with any post types added using the code from your generator. Thanks for any help.
Hey Michael,
I am afraid that I am not able to replicate the issue on my end. Could you please share the whole code that you generated from the generator so I can test it on my end to see what’s the issue?
Hi Michael, I just encountered the same issue that you describe and I realised that it was because my CPT was named ‘product’. It appears that this triggers Divi to load various woocommerce functions, but without woocommerce being installed it failed.
So rename your CPT to something other than product and you should be fine.
It’s a bug with Divi really, it should do a check first to make sure that woocommerce is installed.
Hi,
great tutorial. I create custom post type INVESTIGATIONS and custom taxonomies that goes with it INVESTIGATIONS CATEGORIES and INVESTIGATIONS STATUS.
Work fine but i have one wierd situtation.
When i create main menu, i get 3 parts of what im doing.
I get INVESTIGATIONS that shows posts created and root of category names INVESTIGATIONS
And i must click for INV. CATEGORIES that holds categories, and INVESTIGATIONS STATUS; that holds two status OPEN, and CLOSED:
I feel like i missed something. And i would not like to go further with website until im sure.
I think one look at code would be nice if you have time.
My best recommendation is to check a Facebook group such as Divi Freelancers for Hire, or a freelancing site like UpWork.
All,
I’m working on created a global blog including similar categories by region. I was hoping to be able to create a parent (America’s) and nest the appropriate categories under each parent. When I do this however, i’m not seeing the taxonomy within the Blog module. Is a custom post type my answer? Can I import old/existing blog content to the WP template and assign the content after the custom category is created? What if I wand a single post to work within both parents? Can I assign a parent and child from separate custom post types to the same blog post?
Hi Kevin!
The Custom taxonomy does not work properly with the Divi Blog module. I would suggest you to contact the Elegant themes support about it.
Hi, I am planning to use this idea to make a custom testimonial post and archive page. I have over 300 reviews to deal with! Are there suggestions to bulk upload to to CPT’s? Maybe just the reviewer name and review to those fields from a spreadsheet or csv?
I personally don’t have any experience with that, so I would suggest asking the question in a broader forum such as a WordPress Facebook group.
I created a custom post type called “Clients” with different categories and tags assigned to each. However, I see in the Post Title module under the tooltip ‘?’ that says custom post categories will not work using that module, even if “Categories” is turned on in the meta info.
Is there a workaround for this that would allow me to show a Client’s CPT categories on their individual page (like you would with a Blog post)? For instance, if the Client is “Example Client” and their categories are “Industry A”, “Industry B”, and “Industry C”
Hi Reed!
The Divi modules do not support the CPT taxonomies very well. You can contact the Elegant themes support for an alternative. We’ll look into it as well and update a solution.
Thanks for post!
You’re welcome!
This is a great tool, but I have encountered a problem that has really done my head in! When I create new post type and taxonomies, it stops my pages loading. If I remove all functions code and reload my child theme, then paste the code back in it is OK, until I create a new post – which won’t display. So I refresh permalinks and my pages stop loading again…until I remove all the functions, reload and then paste it in again…etc. I have gone round in circles so many times looking for my error.
I can send you very detailed breakdown of the steps and the code if that helps.
Hi Reuben,
What you are describing is not related to our generator or code, but some other issue.
Thanks a lot for this tutorial… but it miss just one important thing :
How users can fill the form for these CPT ?
I am not sure what you mean?
FYI your cookies plugin seems to be breaking the video above — clicking the video overlay scrolls to the top of the page. If you hide the overlay using browser dev tools, you can see the popup and the actual video.
May also be worth adding the punctions.php bit from the video to the text of the post itself. Having read to the end, I was quite confused that it was missing until I saw there’s a video.
Anyway, thanks for writing!
Hi Joe!
Thank you for bringing the issue to our attention. We will check and fix it.
There are some errors in the code generated by the Generator.
Hyphens (-) are not valid in function names or post type names in PHP.
You should replace hyphens with underscores for the function name and use underscores or no special characters for the post type name.