Another way of looking at WordPress’ usage showing it on more than 25% of all websites on earth is that about 75% of all websites on earth are running something else. That should be enough of an incentive to pique a designer’s or developer’s curiosity.
Because I love dabbling in language, I also like poking around different frameworks, tools and CMS’s just to see how they work. I came across ProcessWire recently at about the time when I was noticing the limitations of WordPress. I am just finishing three different client sites in WordPress, each of which is built on a badly written theme which my client nonetheless selected because they look great.
WordPress Themes are like a look into someone else’s brain. This is not always a good thing.
Why were they badly written? I’ll go over this in a later post, but WordPress themes and especially frameworks should be written to reduce complexity, not add to it.
Overkill Frameworks. A small business site I’m building sits on top of a well-known WordPress commercial framework. It starts with WordPress’ inherent complexity in custom post types, admin menus, and much else, and then it straps on a new layer of code with new classes, methods and nested arrays that are complicated and convoluted in their own awful way. I had to swim through an entirely different file structure with nested configuration files just to get to the code that (I think) I was looking for.
It’s nice to abstract away WordPress’ complexity – which, we should remember, is itself abstracting away a great deal of boilerplate annoyance like database queries, data validation and sanitization, nav menu management, and more. What I struggle with is when a theme or framework abstracts WordPress’ complexity with a whole new, unrelated and equally complicated complexity. It’s like if I speak English and I want to learn Italian, I should not spend much time studying Russian grammar.Over-specific uses. Another site I’m just finishing up creates a custom post type for product coupons which is nonetheless unrelated to the optional WooCommerce plugin, and then codes a very very specific template that makes it unusable for this client. Make a child theme and override that template, you ask? Why, I’d love to except that the CSS is enqueued in such an unusual way that my child themes eliminated the CSS so thoroughly that my site looked like a demo from 1997.
I’m sure I could have figured it all out, but time is money and my client is impatiently waiting for his site.
But back to ProcessWire
All this is to say that, as fantastic as WordPress clearly is, there are other ways to do things. Which brings us to ProcessWire.
One of the most interesting things about ProcessWire is the notion that all fields are custom fields. There are no custom post types; heck, there are no post types at all. There are only pages, fields and templates. It’s completely fascinating. It feels like Drupal or Joomla without the extra complexity.
Because ProcessWire is not “blog centered” – a common critique of WordPress – it is easier to make different data structures depending on the client’s business needs. Yes, it could all be done in WordPress however I occasionally feel like it’s a square peg going into a round hole.
Sometimes, for example, I just want a spot to stash different kinds of data, make it searchable and display it in different ways. I don’t want an archive of articles whose most important classification is the date on which it is published. The ProcessWire team has set up a clever if overly simple demo site about Skyscapers in the United States. While it reads like a Wikipedia entry, it still shows how to think about data structured on its own terms.
As much as I love the WordPress template hierarchy – and as much as I feel that many themes underutilize the template hierarchy to their (and my) detriment, I am enjoying the exercise in mapping data to something different. Because ProcessWire is less opinionated than WordPress, you need to create your own system of templates and tools for rendering your data.
With so much freedom comes so much responsibility. Your site will benefit from intensive early planning, mapping the data, and drawing up templates before anything gets coded. In fact this is wise advice for WordPress or any other CMS. This is much more difficult when using the commercial themes so widely available in WordPress, Joomla and Drupal.
If you pay actual money for, say, a WordPress restaurant theme then you had darn well better be making it for a restaurant. Otherwise you may experience regret later on. If you find the right WordPress theme for your project and it doesn’t need too much customization, then by all means buy it. If you have a big pile of data and you don’t know right away how to classify and organize it, then maybe put up a test site in ProcessWire and see what happens.
After doing a number of client projects using WordPress commercial themes, I was priding myself on being able to bend it to my will. Then I read another developer’s post, asking “aren’t you tired of bending WordPress themes to your will?” Actually I’m not. And yet both I and my content management clients benefit from seeing a new way of things.
Curiosity Rewards the Cat
In the end, ProcessWire’s founder stated in a forum post that it is a system that rewards you by being curious. That’s great attitude to have in any system.
While I haven’t yet put any ProcessWire sites into production, just looking through it on a development site has forced me to look at the same content management styles in a new light.
To see it for yourself, spin up a quick installation of ProcessWire on your computer with Docker or Docker Compose. There are several options produced by different developers. You can use this handy Docker Compose repo which starts it on two separate containers, much like you might do in a large or commercial production site.