December 3, 2014

Make WordPress more like ExpressionEngine

The two CMS tools I use most often are WordPress and ExpressionEngine. They both have their pros and cons, but with WordPress being vastly more popular, I am constantly trying to figure out ways to bring some of the great ExpressionEngine features into WordPress.

Custom Content Types

One of the nicest aspects of EE is how easy it is to control a vast number of different types of content, and organize your site around the content differences and how they relate to each other. Out of the box, WordPress doesn’t support this without getting your hands dirty in PHP, but it is possible to use a plugin to enable the creation of these Custom Post Types in WordPress. There are a bunch out there, but I think Custom Post Types UI is the simplest and easiest to use. It brings all the custom post type options into an easy to use graphical interface. You can also create new taxonomies (categories) to support your new content types. The ability to have custom content types to specifically support the goals of the site you’re building is a requirement for a useful CMS. Once you have these content types set up, the real value lies in customizing the fields that make up the content type.

One downside I’ve found is that you don’t have complete control over your URL structure when using custom post types so you have to give it some thought ahead of time. You also can’t change the name of a post type on the fly and have it update the actual content so you need to be versed in MySQL to do changes like that once you have content in your site. ExpressionEngine handles all of this for you.

Custom Content Fields

Out of the box, WordPress supports a very basic custom field system, but it isn’t nearly as intuitive or flexible as ExpressionEngine. Luckily, an amazing plugin is available to fill the gap and even exceed the EE functionality. This plugin has absolutely changed the way I build WordPress sites, to the point that I actually miss it when I’m back in an ExpressionEngine site. The plugin is Advanced Custom Fields and it is FREE. ACF lets you define custom fields in an unlimited number of ways: by type of content, by taxonomy, by single page id, site-wide, etc. Whereas EE only allows you to assign a custom field group to a single Channel, ACF and WordPress gives you complete control of your custom fields and how they are applied to your site structure. By default ACF comes with a ton of functionality, but you can also upgrade to their new ACF PRO tool and get four additional custom field types that really enhance what you can do with ACF. ACF PRO includes The Repeater field, The Gallery field, The Flexible Content field, and the Options Pages field. These addons approximate Matrix/Grid, Channel Images, Content Elements, and Low Variables.

Again, a downside: If you change the name of a custom field or remove it, the content still exists in the database so you’ll need to remove it manually via MySQL. ExpressionEngine handles all of this for you.

Search Engine Optimization

While in ExpressionEngine you have complete control over how your site is templated and presented to search engines, it’s not simple and often has various caveats that get in the way. There are a few SEO related plugins available, but in my mind, none of them come close to the usefulness of Yoast’s SEO plugin for WordPress. Once installed, it gives an enormous amount of control over site SEO. A few niceties include automatic Facebook Open Graph meta data, Twitter card meta data and Google+ publisher tags. It also has a useful breadcrumb generator, an automatic XML sitemap generator, and very simple config tools for a variety of display options.

Forms and accepting data

ExpressionEngine has quite a few good form tools that allow you to accept data from site visitors, but none of them is as easy to use and extensible as Gravity Forms for WordPress. Getting a developer license for Gravity forms that you can use on unlimited sites is a no brainer. It easily allows integration with mailing lists like Campaign Monitor or Mailchimp, and even basic ecommerce through Stripe, PayPal or Authorize.net. The backend form creation tool isn’t perfect, but it’s very easy to use and allows very quick form creation that just works.

ExpressionEngine and WordPress

I will continue adding to this post as I figure out more ways to bring some EE goodness into my WordPress sites.