If you’ve used WordPress as a CMS for your clients, you’ve probably had to reassure a client that it’s not just ‘a blogging platform’. The Dashboard, however, doesn’t help. Unless you’ve installed plugins that provide custom post types, all an editor can add are posts and pages. Nearly every client site or premium theme I’ve built has needed something custom: products, events, testimonials, team members, services, locations, and so on.
There are some less-than-ideal ways to provide what your client needs. You can give them strict instructions for using post categories or parent pages to create faux post types (that’ll break as soon as they forget your instructions). You can find a plugin for each custom post type (that’ll introduce more code too, for you to vet and maintain). A cleaner solution is to add your own post types. This article will compare Types and Pods, two plugins for creating unique custom post types to match your (or your client’s) needs precisely.
Custom Post Types with the Types Plugin
The Types plugin is a free plugin that provides a Dashboard admin area for creating custom post types, custom taxonomies, and custom fields for your WordPress site. It boasts over 100,000 commercial users and full WPML multilingual support. Types is part of the Toolset family of plugins: the other plugins (which are paid) allow you to create template views without code, generate new content from the front-end, and set up custom roles and access privileges. The free Types plugin provides a great deal of usefulness even without the other plugins.
Benefits of Using the Types Plugin
One of the biggest benefits to the Types plugin is its consistent, simple UI. Its design fits right into current Dashboard visual styling so it feels familiar right away. Types gives you all the options you need for configuring your own custom post type: you start by assigning it a title and a Dashboard icon.
Once you’ve done that, you can configure many additional options about that post type: whether or not to give it an editor, custom fields, excerpt, a featured image, or several other common post meta-data options. The advanced configuration section allows users to make adjustments to the post type’s permalink structure, exclude its posts to appear in search results, permit exporting the post type, and allow the post type to be used in WordPress menus.
All of those features can be accessed in a single Dashboard admin page. Additionally, Types provides the ability to set custom taxonomies (categories, tags) and generate custom data fields (dates, URLs, file uploads).
All your Types settings can be exported and imported from one site to another. They can also be copied to an ’embedded-types’ directory in your theme, and synced via version control without even needing the plugin on the production site.
Drawbacks of Using the Types Plugin
The only thing that I’d like to change about the Types plugin is its custom fields interface. That’s slightly off-topic for this post, but since custom post types and custom fields are often tightly related, I think it’s worth mentioning here. If you know you’re going to need a high degree of configurability for custom fields attached to your custom post types, keep reading to learn about the Pods plugin.
Custom Post Types with the Pods Plugin
The Pods plugin provides the same features that Types provides, but with a more complex interface and more advanced features. It’s also a free plugin with extensive documentation and a wide user base. Pods also offers several paid plugins to extend its free features, including search filters, CSV import, widget generation, and code-free templating.
Benefits of Using the Pods Plugin
In addition to the features that Types provides, Pods offers a more granular field-management system. After creating a new post type, Pods presents you with a blank slate, requiring you to add any necessary fields from scratch. The WordPress title and editor are enabled by default, but behind another screen (‘Advanced Options’).
Pods offers some additional custom field controls that Types lacks. These extra options include character limits, detailed date/time input, code syntax, and country/state lists.
The Pods team has also included some very useful features besides custom post types: custom admin pages, extending comments, and building custom content types that live outside of the default WordPress database tables.
Drawbacks of Using the Pods Plugin
The user interface is the largest drawback of the Pods plugin. Certain design details don’t match the standard WordPress Dashboard styling. This can make Pods feel like a different plugin. Not only does Pods look different, but the interface also requires more steps and more screens during the configuration process. This is probably a fair trade-off for power users: you’ll gain more control by doing more work.
Writing Your Own Custom Post Type Code
Of course, WordPress developers often use core functions to build their own themes and plugins. If you want to keep all custom post type information in your own plugin or theme, you can use the
register_post_type() function to write your own.
Types and Pods both make it very easy for developers to extend WordPress’ CMS function and create a powerful, customized site management experience for clients. Types offers a clean interface with enough options to cover the vast majority of custom post type needs. Pods gives more configurability for advanced case uses at the cost of a slightly more cumbersome interface. For hard-core WordPress DIY-ers,
register_post_type() provides the ability to roll your own custom post type code from scratch.
James is a Senior Front-End Developer with almost 10 years total experience in freelance, contract, and agency work. He has spoken at conferences, including local WordPress meet-ups and the online WP Summit. James's favorite parts of web development include creating meaningful animations, presenting unique responsive design solutions, and pushing Sass’s limits to write powerful modular CSS. You can find out more about James at jamessteinbach.com.
Jump Start Git, 2nd Edition
Visual Studio Code: End-to-End Editing and Debugging Tools for Web Developers