Spotlight: Wordpress Pods Plugin

Please Note: This article was written about Pods CMS version 1.6.6 and you'll find some of the bugs and issues mentioned are now resolved.

Wordpress Pods CMS PluginHave you ever needed to build a website which fit into the "Posts & Page" paradigm of Wordpress 95%, but also needed one or two bits of extra content? I often need to build sites that have a quote/testimonial or banner image tied to individual pages & displayed in the template separately to "the_content()". This is fine in Wordpress as long as it remains a one-to-one relationship as it can easily be achieved with custom fields (and check out the More Fields plugin for handling this), but achieving a one-to-many or many-to-many relationship in Wordpress requires some more dramatic extension.

To my knowledge there are two plugins for doing this. Flutter and Pods.

Flutter

I started out using Flutter as I hadn't heard of Pods but found it to be clunky, buggy & unintuitive. When editing a content type (or write panel) created by Flutter it looks as though you are in the Post or Page section depending on where you placed your new content type. This is confusing and unnecessary.

The data types provided with Flutter are quite extensive (it even includes a colour picker). However, Flutter's image upload control is buggy and I have experienced Flutter jumping to the wrong page, crashing Firefox and losing data. All-in-all I found it to be hard to use, missing key features and lacking documentation which meant I needed something else.

Pods

In essence what Pods does is turn Wordpress into Drupal. It allows you to define your own content types with multiple fields for adding data so that you can use Wordpress' admin interface and templating system to manage whatever data you want, be it just additional testimonials, or a full-blown product database. It also allows you to define templates for displaying or listing data types & to write helpers and filters to handle the entry and display of complex data.

Pods' integration into Wordpress is much cleaner, meaning that content editing is much more intuitive than in Flutter. The many options for configuring filters and helpers has lead to a slightly complex admin interface, but one that is still highly usable. Pods also has considerably more documentation than Flutter seems to, although it is still lacking in some areas.

For me, the key bit of functionality which has made me love Pods is the PICK data type. It is essentially a drop-down list control, but instead of requiring you to define the options, it allows you to choose to list out other Pods, or Wordpress objects such as Posts, Pages or Users. This means you can build relationships between your content items, and that you create blocks of content for your templates by linking pods to Posts or Pages.

One piece of functionality I needed but isn't present is the ability to use a PICK to create a drop-down list of all Posts and Pages to choose one to link to. A PICK data type can currently only list out Pages OR Posts OR Users etc, but not both. It is also not possible to list out Attachments, despite them being stored in the same table as Posts and pages.

Pods PICK interface (modified)As I needed this functionality, I decided to implement it. I have added the ability to PICK from Attachments, Posts & Pages, Posts & Attachments, Pages & Attachments, or Posts, Pages & Attachments. Only two files were modified (manage_pods.php to add options to the select, and Pods.class.php to extend the if/else and SQL statements to choose the right data).

If you would like to use my modified version of the Pods plugin, I have made it available for download. Please first download the full Pods plugin and install it. Then download the podsmodified and upload them to the wp-content/plugins/pods/core folder. I haven't done much testing on them but it seems to work OK for me, please let me know if you have any issues & I'll endeavour to fix them.

So, with my extension, I have found Pods to be extremely useful in several projects. It is a very powerful and ultimately usable CMS solution. However, there are still a few areas where I feel it could be improved:

  • The power of the PICK data type could be improved as explained above.
  • I also feel that PICKs could be further improved by allowing users to specify a simple "enum"-like data type
  • The documentation, although extremely useful, could greatly benefit from more detail & in-depth examples
  • The clunky image upload interface needs work Update: This is now improved as of 1.7.6
  • The interface is usable, but introduces new elements not present in Wordpress (namely famfamfam icon buttons) - by bringing at least the content-editing interface into line with the rest of Wordpress I believe this plugin will really come of age Update: The work in progress Pods UI plguin alleviates some of these issues, but not the different editor (which is my current biggest niggle)
  • There is currently no way to link to a Pod from a Post or Page without configuring the relationship from the Pod itself (it would be nice to be able to setup custom fields to select from Pods but not necessary as it can be done the other way around).
  • There appears to be a bug in the PICK > Categories option

In summary, I believe the Pods plugin to be superior to Flutter and have found it more able to suit my needs. The PICK field type, filters and helpers make for an extremely powerful and expressive CMS and Pods integrates neatly with CMS so as not to confuse editors or clients, which is a key concern. I highly recommend the Pods plugin and look forward to seeing it mature as it has truly enormous potential.

Download Pods Modified! (For Pods 1.6.6)

Update! Download the new version of Pods Modified! Same functionality, but for newer versions of Pods podsmodified_1.9.1 (For Pods 1.9.1)