TL;DR: the WordPress platform as-is needs plugins (extensions) for creating complex and good-looking CMS applications. Toolset from OnTheGo systems is for me the perfect plugin to fill in this gap !
WordPress is —whether you like it or not— the leading CMS on the internet. One of the reasons is the extensibility of the platform enabling third parties to extend the basis functionality with whatever you can dream up. So, no matter what you’re trying to do, likely there’s an extension—or plugin in WordPress speak—for that!
In its basic form WordPress support just the creating of posts/articles and pages. In this you can see very well its heritage as a blog platform. The core does in fact contain all capabilities of a full-fledged CMS. Fortunately you can define your own post types (data types) in WordPress so you are able to extend the functionality with whatever data type you need. In the WordPress world we call these self-defined post type “custom post types” or CPTs. For example, if you are in the business of renting out houses you can define a CPT ‘House’ or for a hotel the CPT ‘room’ with attributes as availability, floor, number of beds etc. But without the help of plugins it is only usable by seasoned (PHP) developers.
For the site of our project “Fossiles Numeriques” we needed more. We liked to register our participants with attributes as ‘school’, ‘class’, ‘favorite color’, ‘teacher’, ‘video they participate in’ and so on, so just posts and pages would not cut it. We also needed to separate the data for the three different kinds of participants all with their own special fields and attributes. On top we like to organize the information in a logical way with parent-child relations for information, etc. In short several CPTs with relations between them. And last but not least—as this was an art project—we needed the site look visual attractive.
Types to the resque
At first I did code the needed CPTs by hand but as soon as hierarchical relations were added, things started to get messy fast! Another thing was that the project was evolving, new idea’s added on daily basis, so no stable requirement to work from either.
In fact it took less than an hour for installing the plugin and defining all the CPTs and fields needed, including with relations and interdependent fields. It was a relief after several long days of coding and figuring out why things did not work at all or —worse— not behaved as expected. And with Types I found it was not only simple to create data types but also easy to change things and amend later, therefore the use of Types turned out to be a great timesaver in the project with as added value a more stable and better coded and maintained product.
The next step —with the information needed nicely sitting in the database — was the design and implementation of the pages of the site. And there I found that having the data in the CMS is one (important) thing, but showing it on the website (in an attractive way preferably) is a whole other ball game! Again I first tried a coding approach for the templates for the pages of the site, and found soon enough that it was
- error prone,
- very time consuming mainly because of the testing required and
- very inflexible as every change in the page layout required a code change of the template.
Views for the front-end
After struggling for a couple of days, I installed the plugin Views, also from the Toolset family. With this Views plugin it was very easy to create attractive looking pages and to insert the data on the page. An important aspect was that it worked out of the box with my preferred page builder software (BeaverBuilder).
Among others I created a template for all the participants from the nearby schools that, based on the database, showed different symbols for girls and boys, changed the color of the page based on the favorite color, etc., all without writing one line of code.
Another benefit was the flexibility of the software. If there was a need to change the order of fields, add a field or whatever, it all could be done by simple WYSIWYG-type edits in the BeaverBuilder templates.
And because the CPTs, their relations, etc. are managed by the plugin and not by the theme you can also easily change themes without losing all your hard work! The Toolset plugins are well coded and well maintained, both in terms of speed as security, which is not always true with your in-house code :-). This makes keeping up to date with exploits, new WordPress versions, new page builder functionality and also new PHP versions extremely easy. You just have to make sure the plugins are updated as new versions are available —business as usual I would say— and you are home free. Last—but very important when building complex sites—their support and documentation are top-notch. You don’t need it often but if you need it you really need it. I had to consult them twice and they know their stuff very well and were able to help me out fast.
To resume :
If you need/want to build a good looking complex WordPress site and you
- don’t want to hand code all the data types and their relations with all the code testing and management required
- and/or you want an easy integration with page builders without the need for coding,
- want to decouple design and data
then Toolset by OnTheGo systems is imho the way to go. As mentioned earlier the plugin is well coded, documented, regularly updated and enhanced with new functionality and support for other WordPress plugins and ‘just works’.
No, there is no thing as perfect software but in the grand scheme of things the combination of WordPress, BeaverBuilder and Toolset comes pretty close to it.
NB: the Toolset consist of a family of plugins for creating complex CMS sites on WordPress. In this project I have used two of then Types (to create the Custom Post Types, taxonomies & fields) and Views (displaying the content on the site’s front-end).
The other parts of the Toolset suite are:
- CRED for front-end content creation forms
- Layouts the drag-and-drop Bootstrap editor for pages and templates,
- Access for access control and custom roles management and
- Maps a tool for displaying anything as markers on Google Maps.