Today I’m going to talk about ProcessWire from a beginner’s point of view. It’s a free open-source CMS that you can install via Softaculous. I’ve started building a site with ProcessWire for the first time, having always used other CMS’s like WordPress, Concrete 5, Prestashop, etc before. Is ProcessWire a good choice for your next project? What are its strengths and weaknesses? I’ll answer these questions right here.
A quick non-technical overview first
ProcessWire is different from other CMS’s in that its aim is to let you build a truly custom site but without having to know PHP or SQL. So it fills that otherwise-unfilled middle ground between a) coding every last thing from scratch and b) having a “fill in the blanks” CMS like WordPress.
ProcessWire is especially well suited to directory sites and review sites, and even more so if you want to monetize with affiliate links. These niches are not particularly well-served by other existing free open-source software. You can use ProcessWire to build plenty of other types of sites too, those were just a couple of examples.
The best way to describe ProcessWire is by example: take a look at the official front-end demo – it’s a site about skyscrapers at http://demo.processwire.com/.
OK, this concludes the non-technical overview. Let’s now move right along to the pros and cons.
- ProcessWire’s biggest strength is huge: it lets you build literally almost anything you want. By contrast, CMS’s like WordPress or Prestashop constrain you heavily to the layout of your theme or to a particular expected type of functionality. ProcessWire makes no assumptions about the look or function of your site. This makes it incredibly powerful.
- Custom fields. You can quickly and easily create custom fields that you can use, search by, sort by, and display. This is perfect when you’re creating a directory site, but is handy for a myriad of other things. As a super-simple example, I’ve defined a field that is for the affiliate banner code for each article, so that I don’t have to hunt through the whole page content whenever I want to update the banner for the article. It’s true that many other CMS’s also let you define custom fields but in those cases you’re usually limited in the types of data you can use and in whether you can search or sort by these. By contrast, ProcessWire lets you define the custom fields you want, quickly and easily in a point-and-click manner. You have a fine granularity of options, but it will partially hide the advanced ones and/or will make recommendations so you’re not at all lost if you’re a beginner defining your first field.
- You don’t need to know PHP or SQL to retrieve and display fields. You don’t have to write functions and procedures. ProcessWire has its own, super-simple code that you get to use. This means you can query your data safely and easily. You can bring up exactly the data you want on your site, limited and sorted the way you want it.
- Flexibility to change things as you go. Once you define a template, a custom field, or even some other things, you’re not “locked in” to the way you first set it up. You can change things as you go: adding extra fields to your page template, even making changes within the properties of existing fields. This flexibility is incredibly helpful if you later realize you need an extra functionality or field, or you want to give your page a different template.
- Security features built-in. There is configurable brute-force protection on the admin account. Also, you can (and should) change the default login page name during installation. Custom fields are also built with security in mind: you can opt to use data sanitization functions on text or HTML fields which will strip out any unwanted code during field input. The ProcessWire core is built securely, and is something we all too rarely see in other CMS’s, many of which rely on plugins or simply don’t offer any strong security at all.
- Upgrade to next version from within dashboard (via free add-on module).
- Build your layout however you want: CSS, Bootstrap, HTML5 boilerplate, whatever. ProcessWire works with everything, and gets out of the way of your rendering.
- Categories, while hard to get your head around at first, are actually far more powerful to use when implemented in ProcessWire than in WordPress. There is a tutorial with examples of how to set up categories in ProcessWire.
- Some of the modules that a beginner might conceivably want to use are not all that easy to use. Often plenty of theory is shown but documentation of an actual worked example for a typical-use-case is missing. In fact, in two cases I wound up deciding to use manual methods to achieve my aim because it was faster than trying to figure out how to use the module. This rather defeated the purpose of the modules. To be fair, this is not always the case: some modules are easy to use. The ProcessWire click-to-upgrade module is the ideal example of a module that a beginner can use without problems.
- ProcessWire has no pre-built auto-generated publication date field for each page that can be used for sorting. There is such a field, but as far as I’m aware it can only be used for display and not for sorting. In my mind this is a rather big omission, as you often want to sort by most recently published (and not by most recently modified or by date created). You can quite easily get around this problem by defining a custom date field that is mandatory on each page, which the author then fills in as the publication date. I’ve done this and it works fine for sorting, but it would be more elegant if this was something that was automatically built into the core.
- There is no ability to auto-publish a page at a selectable future date built into the core. This can be a problem if you’re accepting custom ads for your website or writing time-sensitive information, which ProcessWire is otherwise ideally suited to. There is a module that is designed to schedule future publication dates, but it’s not a feature built into the core, and I feel this is a rather integral functionality that the core needs.
- Has no maintenance mode built into the core. There is a module for that, but it is not the easiest to understand how to configure. This is not a big problem, as I only rarely need maintenance mode, but some users might find it frustrating.
The above disadvantages are minor and have workarounds. For me, the advantages of ProcessWire far outweighed the disadvantages.
Is ProcessWire for you and your site?
ProcessWire is incredibly powerful and is ideally suited for many sites, but there are times when you may prefer another CMS. Let’s sort out when ProcessWire is best suited and least suited to you and your site.
Some basics you’ll first need in place if you work with ProcessWire
First of all, you will need some working knowledge of HTML and CSS to use ProcessWire successfully to render anything. You don’t need to be an expert, but you will have to expect to pick some up as you go. Fortunately, you won’t need any SQL. You might need only one or two basic, and I mean really basic, PHP commands (“if” statements and “echo” statements are the ones I use the most). But no PHP otherwise. I picked up what I needed to know as I went, and if I can do it, you can too.
You will need to have a hosting plan that includes cPanel (and ideally Softaculous too). A plan without cPanel (i.e. FTP-only access) isn’t going to be much help if you use ProcessWire. This is because with FTP you’ll waste a ton of time downloading, editing and uploading your ProcessWire template files when you could instead edit and save your files right there directly in cPanel instead. I’ve listed my top 3 recommendations of cheap, reliable web hosts that will work with ProcessWire and include cPanel and Softaculous bundled into their plans. (Each are $10 and under a month – some $5 and under.)
When I’d recommend another CMS
- For a simple blog, I’d probably use WordPress as my first choice over ProcessWire. For a store, I’d use Prestashop. The reason would be that WordPress is ideally suited for blogging; Prestashop is ideally suited for e-commerce, so everything is already “set up” for you to get started. You would just fill in the blanks with these, so it’s faster to get up and running. You could still use ProcessWire in those cases; it would just feel to me like re-inventing the wheel.
- If you don’t know any HTML or CSS and it’s your first-ever website, it’s not going to be the easiest CMS to work with. I’m not saying you shouldn’t try it: it could work out great, but you’ll also have quite a steep learning curve, which to be honest can be demoralizing on your first-ever site. If like me, you’ve used other CMS’s like WordPress before, then you should be able to pick up ProcessWire just fine, even if you don’t know much HTML and CSS – so long as you’re prepared to learn as you go. If it’s your first site and you already know HTML and CSS then you should be fine.
When I’d recommend ProcessWire
- If you’ve started to feel like WordPress is a sort of “jail” where you’re too heavily constrained by your theme, then this is a perfect example of where you might want to use ProcessWire instead. You can create the layout you want – no rules about what type of data you can put where.
- If you’d like to design a site from the ground up for any reason, this is another situation where you’d want to use ProcessWire. I was able to literally take pen and paper and draw how I wanted my site to look, and then build it to look like that.
- ProcessWire is ideally suited for directory sites due to its ability to handle, search, sort and display custom fields. If you’re building a directory, you should certainly be considering ProcessWire in your shortlist of candidate CMS’s.
- If you want a custom functionality to your blog, or you want to do something more advanced than WordPress, then I’d recommend ProcessWire, because it can handle things that just aren’t (easily) possible with WordPress.
- If you’ve built a site on another CMS but the data structures have turned out not quite a good fit for what you want to do, so you’re often dealing with workarounds. For any site, if you don’t have a good “marriage” between your CMS and your site requirements, then it’ll always be frustrating to work with that site. In those cases you might want to consider ProcessWire because of its flexible ability to handle any types of data.
ProcessWire is a very powerful and flexible CMS. It makes no assumptions about the layout or the function of your site, so you have an incredible amount of freedom in how you design your site, yet you don’t need to know SQL or PHP to use it. Here I have given a balanced overview covering the advantages and disadvantages of ProcessWire from a beginner’s point of view.