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 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:
- Color Picker
- Embedded Media
- Select (Dropdown)
- Multiple Lines (Textarea)
- Single Line (Text)
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.
- Post Object
- Date Picker
- Google Map
- Flexible Content
- Select (Dropdown)
- Page Link
- Color Picker
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
|Advanced Label Controls||√||√|
|Add Existing Taxonomies to CPTs||√||√|
|Show UI for Creating New CPTs||√||√|
|Exclude From Search||√||√|
|Custom Rewrite Slug||√||√|
|Show in Menu||√||√|
|Show in Submenu||√||√|
|Show in Nav Menus Section||√||√|
|Allow permalinks to be prepended with front base||√||√|
|Post Types Relationships||√|
|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.