When I get called to the rescue it usually is because of a project getting stuck on something. This time, the development contractor simply refused to keep working on a project they got this far with a 5000€ budget. When done right, you can get really far with a 5k budget on a WordPress project. Not this time though. What I found when investigating is so stupid and brilliant at the same time that I just have to share it with you.
The project had aimed for a networking/education/innovation platform for physicians with a login-protected member area, event calendar and downloadable info-material concerning scholarship and funding. The responsible editors-to-be are young medical doctors obviously capable of handling some online-editing, images included.
You would, together with the client, decide on a theme that resembles the layout aimed for as close as possible. There are amazing themes like Avada, Divi or X to just name a few. A license for one of these premium themes costs 50$ -100$ including future updates. We are talking about feature-rich themes worth thousands of hours of development for like 60$. And you would benefit from those themes being worked on further to keep up with the progression of WordPress and internet technology in the future. This is unbeatable cost-benefit-wise.
You’d then build a child theme to that parent theme and implement functional and layout adjustments there. Premium themes these days come equipped with some sort of visual composer (or beaverbuilder or elementor), either native or bundled as a plugin. That visual composer or visual builder enables the editor to arrange and configure predefined elements like image-sliders, toggles, flip-boxes, persons, etc. on the post/page.
If the client has major money to spend and wants something truly unique, only then would you build a theme from scratch using a template like underscoreS. You’d then have to build a visual composer yourself or integrate a page builder plugin if you want to have the convenience of drag-and-drop-composing and who doesn’t these days?!
With this particular project I had to evaluate, the agency did something that I had never seen before. They emulated a visual builder by using custom fields and page templates. And while they were at it, they just mixed copy-text into the page-templates *gasp* Let me elaborate …
There is that brilliant and popular plugin AdvancedCustomFields which is used to add ~ you’ve guessed it ~ custom fields to your posts/pages. This is best used on custom post types, maybe Restaurants, in need of special fields, maybe lat/long coordinates to display their location on Google-Maps.
The downside of custom fields is that you need to adjust the page-template.php file to display them properly. So for every post/page with custom fields you need a php-coded template. While using a visual builder an editor can arrange and edit elements on a page/post dragging and dropping them around. With that custom fields and templates strategy though you’d need a php-developer to add and edit post/page templates whenever you want to add or rearrange fields.
But … why?
My first thought was that this custom-fields-many-templates approach to emulate a visual builder is dumb. It gets a specific task done while somewhat negating the purpose of content-management-systems: empowering the editor without coding experience to conveniently manipulate content. It then dawned on me that WordPress is lacking something that Typo3 got built in: a way to explicitly grant/revoke rights to/from users/groups. So If you either want to milk that client hard for every simple change or restrict the editor in favor of layout consistency it definitely gets the job done. There are different tools to achieve the latter though, like Divi’s Role Editor for example, with which you can control what users are allowed to do with the builder.
I advised the client to call the 5 grand a loss and start over with a proper concept. Have you seen something like this before? What are your thoughts on that strategy to use ACF and page templates instead of a page-builder?