My Favorite CMS Features from WordPress and Drupal

I work with both WordPress and Drupal. As a PHP programmer I was drawn to Drupal in 2009 and started with D6. I avoided WP despite all its popularity, always thinking of it as a blog, or more for small sites. I wanted more structure, more of a programming framework. Back then I also worked with PHP frameworks, and given the choice I would have normally rathered to work with CodeIgniter than any CMS. After all when I started building sites in 2002, there were no CMS’s at least nobody told me about any worth trying.

Today I am always a bit torn about “which is better” between Drupal and WordPress. Like many others I’d like to be able to make a definite statement on that and say well, I’ll just focus on ____BLANK. It’s not that simple, I used to have this site goldhat.ca in Drupal. Then I tried Concrete5 briefly, that didn’t work and when shifting away I decide no I’m not going back to Drupal, I’m going to try WordPress. Having seen how easily many parts of WP work on client sites, I wanted to see if it could handle some of the customizations and extensions I wanted to add to goldhat.ca. I found it could, especially with the help of a plugin now use in nearly every WP site I run, ACF (Advanced Custom Fields).

What is the key differentiation between Drupal and WordPress?

If I had to point to 1 key different in these systems it’s that in WordPress generally things just work, and they look good. In Drupal, again speaking generally (and no offense to Drupal gods!) most things look terrible and arrive broken and require extensive work to make functional. Now that might sound like a damnation of Drupal, which it is to some extent. But we have to consider that if you measure based on the general “size” of a website, measure not really by number of pages but by complexity of features especially the need for external integrations, complex logic, custom programming etc., then the comparison tends to look like this in my mind:

  1. Small, simple site: WordPress rocks. Install it, pick a theme, customize theme, install some plugins, everything looks good and works good and the build is fast. Management is fast, further development easy. Drupal in contrast, much more configuration needed to get this simple site looking and working well in most cases.
  2. Medium site: here is where it’s a bit of a toss-up because in this range WordPress might be okay, and Drupal starts to be more competitive. I’d still tend to lean toward WP but that’s because I’m very comfortable extending WP with plugins and using ACF to add the fielding and custom content options that make it seem a lot more like Drupal. With a medium complexity and size you have to start looking at specific plugins and modules and features and asking which system fits the specific site being built.
  3. Large, complex site: no question in my mind that when already have more complexity in your site, then the complexity of Drupal starts to make sense. The time required to get up and running, is acceptable because you would have to spend that time in WordPress anyway given all the functionality you might need to build up. A key example of this is when you need advanced roles/permissions. Drupal generally has better support for this (though WP has plugins that add more support in this area).

A principle I now live by is to use WordPress whenever possible. Meaning only go to Drupal, or another solution including a PHP framework or custom platform like Moodle/Magento if WordPress really seems like a poor fit. And I find increasingly that is a rare situation. In fact I’m working on a site right now where the lead build team said absolutely no way we could build this in WP, it’s too big, too complex, needs too many roles and access handling, security features, etc., but I’m not really convinced that was true. Often I believe that Drupal builders make the presumption that only Drupal has various features, when in fact WP has them perhaps implemented in a different way.

Best Drupal Feature

In my mind without question Drupal is a leader if “Fielding” or custom content type development. This is where you need custom content such as a real estate listing, and you can build your own content type and add the various fields such as bedrooms, baths etc. It’s like being able to develop your own custom application inside the Drupal admin. Other CMS systems of course have some equivalent feature, WP now has custom content types in the core but it doesn’t have fielding in the core. So fielding is a key feature because in almost any significant site your main goal is to store various types of content. And being able to do that with “fields” rather than building up pages with text alone is crucial. Drupal handles this in a powerful way. And fielding doesn’t stop at making the fields, there is also display handling so you can dictate how your fields display. For many situations, you can make your custom content types and your fields in the admin, and configure the display, and never need to do any custom coding to have a function system to add/edit/delete custom content and display it.

Best WordPress Feature

Is simplicity and everything working and looking good a “feature”. It’s not as easy here to pick something that stands out and maybe that’s because WordPress is less about “powerful features” and more about a holistic system that is balanced and works well in every aspect. You might complain about lack of a feature in some areas, but you will rarely complain about something not working or not being well designed. Back to the point… best WP feature in my book is the drag/drop widget handling and the sidebar system. This makes adding widgets really easy and when you’re building themes or doing more extensive customizing there is enough power under the hood to extend this system and create whatever sidebars you want. It’s definitely much friendlier to use than the Drupal equivalent which is either Blocks Management or Context. And the fact that Drupal has Context, which is basically a more advanced way of handling Blocks showcases that the core blocks system is not very friendly to use.