Custom Post Types UI vs Types
Custom Post Types UI and Types are the two most popular plugins for creating WordPress Custom Post Types. They both have great user-interfaces and they let users quickly and easily create custom post types without having to mess around with code. But which is better? This comparison will take a look at the details of each, especially ease of use and features.
Custom Post Types UI
Custom Post Types UI is a free plugin from WordPress.org. It has a pretty simple interface and it won’t be hard for most users to grasp. The only negative I can see is a lack of description for some of the more complex options (i.e. there is no title set for the “With Front” and “Query Var” options). Overall, I like the feel of the Custom Post Types UI plugin and I think it’s pretty easy to get the hang of.
Custom Post Types UI is also a leaner plugin because it doesn’t have the built-in feature of adding custom fields. However, this means that you need another plugin to add custom fields. The most popular and best choice is Advanced Custom Fields. This isn’t a bad thing because ACF is an awesome plugin and very well documented.
Finally, an awesome feature packed into both Custom Post Types UI and Advanced Custom fields is the ability to export the PHP code that produces the custom post types and custom fields (ACF can also export XML files). This makes creating CPT’s and custom fields that you use for client projects can be created locally and you can simply export the code and use it on the client’s site without needing to install the plugins.
Types
Types is another free CPT plugin. It has a very simple interface and, in my opinion, has better help cues for more advanced areas. It also has a built-in custom fields manager so there is no need to install any other plugin like with Custom Post Types UI.
Types Custom Fields vs Advanced Custom Fields
Since the use of Custom Fields basically goes hand in hand with custom post types, I thought it would be worth discussing custom field usage with these plugins (CPT UI and Types).
Types Custom Fields
One of the best features of Types is the built-in manager for Custom Fields. You can easily create new groups of custom fields and assign them to any post type. The whole process is quick and, since it’s built into the Types user interface, it’s pretty intuitive. The Types selection of custom fields options is also very nice:
- Audio
- Checkbox(es)
- Color Picker
- Date
- Embedded Media
- File
- Image
- Numeric
- Phone
- Radio
- Select (Dropdown)
- Skype
- Multiple Lines (Textarea)
- Single Line (Text)
- URL
- Video
- WYSIWYG
To use the Types custom fields, the user can follow the native WordPress get_post_meta() function or they can follow the Types API. For example, to display an audio custom field, the Types API PHP code would look something like this:
types_render_field( "my-audio-field", array("output" => "raw") )
More can be read about the Types API from the Types API documentation page.
Advanced Custom Fields
Advanced Custom Fields is a separate plugin that you can use with Custom Post Types UI (or even Types if so desired) since CPT UI does not include functionality for registering custom fields. In my opinion, the Advanced Custom Fields interface is a little more complex but it’s not difficult once you get past the slight learning curve.
- Repeater
- Gallery
- Post Object
- Date Picker
- Text
- Textarea
- True/False
- WYSIWYG
- Google Map
- oEmbed
- Image
- Relationship
- Flexible Content
- Checkbox
- Select (Dropdown)
- File
- Page Link
- Color Picker
- Taxonomy
Using the ACF custom fields could not be easier. In addition to also being able to use the get_post_meta() function, the ACF function is amazingly simple: the_field(‘field-name’)
Both plugins (Types and Advanced Custom Fields) are great for creating custom fields but I give the edge to ACF.
Custom Post Types UI vs. Types – Feature Comparison
Feature |
CTP UI |
Types |
---|---|---|
Basics |
||
Name Plural | √ | √ |
Name Singular | √ | √ |
Slug | √ | √ |
Description | √ | √ |
Advanced Label Controls | √ | √ |
Visibility (Public/Hidden) | √ | √ |
Add Existing Taxonomies to CPTs | √ | √ |
Show UI for Creating New CPTs | √ | √ |
Supports: |
||
Title | √ | √ |
Editor | √ | √ |
Comments | √ | √ |
Trackbacks | √ | √ |
Revisions | √ | √ |
Author | √ | √ |
Excerpt | √ | √ |
Thumbnail/Featured Image | √ | √ |
Custom Fields | √ | √ |
Page Attributes | √ | √ |
Post Formats | √ | √ |
Advanced |
||
Has Archive | √ | √ |
Exclude From Search | √ | √ |
Capability Type | √ | |
Make Hierarchical | √ | √ |
Rewrite | √ | √ |
Custom Rewrite Slug | √ | √ |
Show in Menu | √ | √ |
Menu Position | √ | √ |
Show in Submenu | √ | √ |
Menu Icon | √ | √ |
Publicly Queryable | √ | √ |
Show in Nav Menus Section | √ | √ |
Allow permalinks to be prepended with front base | √ | √ |
Can Export | √ | √ |
Post Types Relationships | √ | |
Other |
||
Create Custom Taxonomies | √ | √ |
Create Custom Fields | √ |
So Which One Do You Use?
After having used both Types and Custom Post Types UI previously and playing around with them again for this post, I prefer Types to create my custom post types. What gives Types the edge for me are the Posts Relationship and built-in Custom Fields features. Personally, I like having everything in one plugin but I’m OCD when it comes to backend organization. Since I wrote this post, I started using the CPT UI and ACF combination more and, now, I work almost exclusively with Advanced Custom Fields. However, I now prefer to register my custom post types with code. Therefore, I personally never have a need or desire to use Types because ACF gives me everything I want/need and I love the interface. Even though I register my custom post types and taxonomies with code, either Types or CPT UI work perfectly and eliminate a lot of the confusing parts of registering these things manually. That said, I do have a few points for you to consider before choosing whether to go with Types or the CPT-UI/ACF combo:
- Custom Field Options – Does one (Advanced Custom Fields and Types) provide options for custom fields that are more useful for you? They both offer very similar options but each has a few that the other does not (i.e. ACF’s repeater field and Types’s Skype option. In my opinion, ACF provides more useful field types.
- Toolset – Are you using Views or other Toolset plugins? If so, Types is part of that plugin suite and you may want to go with it, especially if you’re using Views to creating layouts.
- Post Types Relationships –
If you need to relate your post types in certain ways, Types will probably be the way to go. Both Types and Advanced Custom Fields have the post relationship feature. Read more about Post Types Relationships. - Exporting Code – If you would like to export the code that produces the custom post types and custom fields you create, Custom Post Types UI and Advanced Custom Fields let you do so. Types can export settings but I’m not aware of any ability to export the actual PHP code (I stand to be corrected, though).
Did I miss anything? Wanna share your thoughts or preferences? Feel free to comment below.
Pescadito says
Hey, nice review, but what about compatibility, why i cannot see in TYPES the cpt defined in CTP UI and viceversa… and the same with others pluginrs.
Or isn’t better start using anyone and then change to a snippet plugin with wp generated cpt?
Stefan says
Hi Ren,
currently I am testing some CPT plugins, so your post – though a few months old – is exactly what I need. Or – almost. I need a plugin which simply allows me to have posts in a hierarchical order to other posts (like pages), but still reacting as posts – as part of categories, and shown in categories.
Neither of the plugins does this.
Either their categories are shown in archives instead of categories, or their categories are shown, but the posts are not. But I am only a beginner in custom post types, and maybe I just don’t make it right. Perhaps you can recommend me what to do?
Thanks.
Malik Oxford says
Ren, fantastic post! This really helped me to make a decision. I’m actually in the process of deciding whether I should continue using Types for my custom post types or use Custom post types UI. Right now I’m using Types for my custom fields too but I might move to ACF because of one very, IMO, “killer feature” that ACF has and Types for custom fields doesn’t.
The ability to re-order your grouped repeater fields. If you look at the video in this link for ACF, you’ll notice around 1:45 they are re-ordering the grouped fields on the admin side, which then gets reflected on the front-end: http://www.advancedcustomfields.com/resources/repeater/
In the Types plugin, once you create the grouped custom fields that you can repeat, you can only order them on the view side (front-end). If you you click the sort links on the admin side, they will not be reflected in the view. It’s just a simple AJax call that is not tied to the order in the database for the custom fields.
In my current project, I need to give the editors the ability to sort the list however they see fit. It’s almost like adhoc sorting without a specific criteria. Not by ascending or any other column data. However, I’ve reached out to OnTheGoSystems (creator of Toolset/Types) and they have this option, but requires tons of other plugins to make it work. So it’s ACF all the way. Thanks again for this comparison. It was very helpful.
Net Ingenuity says
On a site (hidden from view while in development) I want to display a “thought of the day” and have each of the 365 posts repeat annually (plus leap year). I think a custom post type may let me display “Title” “Date” and “Thought.”
Will the ACF “repeater” field help with that? Am I on the right track? If not, how else might this be done?
I also hope to display not one set of “Thoughts of the Day,” but a few. I may do so with tabs on the page and in each tab will be a custom query calling the post that is the “thought of the day.”
Thanks in advance
Sergey Arustamov says
Thank you for the article, Ren!
I prefer to use CPT UI + ACF because this duet gives me wonderful possibilities for any kind of project.
Types’ Post Types Relationships is very good feature, but ACF has the same called ACF Relationship Field, which let you to make relationships between pages, posts and custom post types. Otherwise you may want to use Posts-2-Posts plugin.
Ren says
Thanks, Sergey. You are correct. It had been a while since I last visited this post and it needed to be revised a bit so I updated things to reflect this and my current preferences for anyone interested.
Ransome Cobb says
Thanks for this article. I was trying to decide which to use for a current project and this helped out.