In this article, we will compare WordPress with a lesser-known and more niche solution, Craft CMS. Our goal is to understand whether the Craft CMS choice might be better, and for whom and for what projects. We will start with a general introduction of both solutions.
Despite the passage of years and dynamic changes on the Internet, WordPress retains a stable leadership position in the content management system market. Currently, WordPress is the foundation for about 43% of all websites worldwide and about 60% of all the sites built on a particular CMS. The question is what is the reason for such popularity and does it mean the best choice?
The first version of WordPress (1.0) was released in 2003, a time when the terms “social media” and “smartphone” were not yet known, and the “blogosphere” was booming online. Having your own blog was a fashionable trend back then, but it was also a brand new way to express your thoughts to a wide audience and discuss it in the comments below the post.
WordPress was created as a tool for just such an activity – blogging. This, in turn, defined and imposed patterns and conventions: content was centered around “pages” and “posts,” the latter could be assigned to “categories,” and “comments” could be posted under posts. This content format also determined the shape of the database, the names and hierarchy of templates used to display text, and so on.
Over time and subsequent versions, WordPress has been expanded with features that bring it more in line with a universal “content management system.” Significant in this regard was the 2010 release of version 3.0, which introduced the ability to create content types other than “page” and “post” (so-called “custom post types”), as well as the 2016 version 4.7, which integrated the REST API.
Due to its popularity and the fact that a significant number of sites use third-party themes and plugins, WordPress needs to maintain backward compatibility. After years, it has also basically exhausted the possibilities of developing the platform in this form. An attempt to modernize and escape “backward compatibility” was version 5.0, released at the end of 2018, introducing a new “Gutenberg” block editor, which in simple terms can be described as an “embedded page builder.” Page layouts are now created from content blocks of a specific type (paragraph, headline, media, etc.). The editor itself is built on top of the React library and offers the ability to create custom block types, their layouts, and recently even edit the entire page (“Site editor”).
Gutenberg did not meet with an enthusiastic reception, but the platform is still being developed and it is the block editor that is the future of WordPress. Nevertheless, today – 20 years after the release of the first version, WordPress is still “at first glance” a blogging tool: it follows the same conventions, uses the same database schema, and in the source files you can find code written a dozen years ago.
At the same time, what can be said for sure about WordPress today is that it is a system on which almost anything can be built. This is due to an active and numerous community, not only amateur, but also commercial and professional. This ecosystem provides thousands of themes, plugins and developer offerings to suit any need. As a result, WordPress can be the target choice for projects of any scale and budget, and a working site can be built on it even without any programming knowledge.
An expanded and created from scratch WordPress-based project can be done professionally, run smoothly and efficiently, but this requires more or less facing the aforementioned “legacy” that WordPress brings with it – the limitations of the original conceptual basis, the inflexible database schema, the need to use plugins to extend the system with basic functionality. And this is where tools such as Craft come in.
While WordPress was gaining popularity as a blogging platform, Craft emerged as a solution that was intended from the start to be an advanced and flexible content management system (CMS). Its first public version was released in 2013, so it is a tool with a significantly shorter history than WordPress, yet fully mature.
The system is built on a solid foundation in the form of a php framework called Yii and is developed by Pixel & Tonic and a project-focused community of developers – much smaller compared to WordPress. Craft’s market share is also incomparably smaller and is currently less than 1% (which, however – compared to WP – is a share comparable to more well-known CMS like Drupal or Joomla).
Despite its low popularity in the market, Craft is usually mentioned in lists of the best alternatives to WordPress, and was recently selected by the W3C (World Wide Web Consortium) as the CMS for the new version of the site. Companies using the system include: Microsoft, Apple, Reddit, Adobe, BigCommerce, Netflix, Ikea, AT&T, McDonald’s, Dell.
Craft is being developed as a tool designed to give maximum freedom and flexibility in organizing and presenting content. With the word “flexibility” in mind, we come to the first major difference between Craft and WP, namely the approach to the content model.
WordPress proposes its blog model from the beginning – when you first visit the admin panel, you see the “Entries” and “Pages” sections. In this approach, the content should follow the imposed model. Craft takes the opposite approach here – we start by determining what content will be presented on the site, and only around these assumptions is a model built that will best fit the content structure (“content-first”). Thus, in a new installation of Craft, you won’t find any sections or modules designed for content input – we start with a “clean sheet” and the entire model must be defined from scratch. Craft here provides all the necessary tools to configure content types, field types and layouts, links between them and links to views for the frontend. The content model can be built entirely in cms, without writing code.
The “clean sheet” approach does not only apply to the content model, but also to the presentation layer. There is no concept of “theme” (theme) in Craft, for the reason that the system does not impose any specific structure, hierarchy or naming of templates for content presentation.
WordPress themes were conceived as an easy way to prepare or change the appearance of content presented in an assumed model. In Craft, it is much more difficult to prepare a universal “theme” because Craft does not adopt any content model in advance or enforce any particular way of presenting content. As a result of this approach, after the installation of Craft, the public directory is empty – the frontend (in the traditional monolithic approach) must be prepared from scratch as a tree of twig templates, and we have complete freedom in shaping it.
The approach described above can, of course, be applied using WordPress, and we do it successfully, but here it is necessary to use additional plugins that complement the missing functionality of WordPress, such as: ACF for easier construction of the content model and/or Gutenberg blocks, or Timber providing the ability to use twig templates. Craft offers all these tools out of the box and they are the foundation of the entire solution.
We have come to the second fundamental difference between the two systems: Craft does not dictate the form of content presentation – there is no “theme” concept. For WordPress, a theme is one of the cornerstones of its popularity, as themes can be easily installed and customized for a site, with usually no programming skills required.
From the above, there is a third basic difference between Craft and WordPress: with Craft, it is much more difficult to build a site without any programming knowledge. In the case of WordPress, there are thousands of ready-made themes and templates that you can install and use, making it so that you don’t necessarily need to be an expert programmer. In the case of Craft, you won’t find repositories or stores with similar offerings on the web. In Craft, every element is designed, coded and created from scratch.
In fact, from the beginning Craft was conceived as a tool aimed more at programmers, but thus providing more flexibility and the ability to freely customize the configuration under more complex and demanding projects.
So while anyone can install a theme and call themselves a WordPress developer, Craft developers face incomparably higher requirements, which in effect virtually excludes the amateur market here. This has a decisive impact on the quality of the final product in many cases.
The WordPress repository currently contains about 60,000 free plugins. Many of them are professional and paid corporate solutions, but you will also find simple solutions, in many cases amateur ones.
Several conclusions can be drawn from the fact that there are so many plugins for WordPress:
WordPress in its basic version provides only basic functionality.
Presumably, there is a plugin for most of the needed and missing functionality.
Building more advanced solutions will certainly require the use of external plugins or coding from scratch.
By the same token, it is not surprising that after looking into the admin panel of some larger site built on WordPress, we find a dozen or even dozens of plugins there.
Such a large repository of WordPress plugins also means some problems and risks:
Plugin code is not subject to strict quality control; some plugins may deliver poorly optimized solutions that degrade the performance of the entire site.
Plugins need to be updated regularly – new versions provide bug fixes or security improvements; if a site relies on a conglomeration of plugins, each of which provides some piece of the whole, it’s not difficult to have a situation where, after any subsequent update, a plugin becomes incompatible with another – as a result, some functionality or the entire site may crash.
Often, plugins becomes abandoned by their authors and are not further developed; over time, this leads to a situation similar to the one above, where an outdated plugin stops working properly with newer versions of WordPress and other plugins; both of these situations will require the withdrawal and abandonment of updates, or the help of a developer.
More advanced plugins often come with a fee; there is usually no way to test them before purchase, and we have to buy the license for each plugin from the author’s site or one of the many repositories that sell licenses.
Craft seems to solve some of the problems described above. Craft is by design an all-in-one solution – it provides more built-in capabilities and functionality than WordPress. To get functionality in the WordPress dashboard similar to Craft’s base functionality, it is necessary to use at least a few plugins. So the first conclusion is that the need for additional plugins in Craft is much less.
Like WordPress, Craft has a built-in official plugin repository. The number of plugins it has available is much smaller compared to WordPress’ offerings not only because of the aforementioned, but also because of a different approach to plugins: a much smaller community focuses on improving and developing existing solutions rather than creating more competing variants of them.
However, if we need the use of additional plugins, Craft’s central repository has two additional advantages:
each plugin can be installed and tested on the development version of the site before purchase;
all payments and license renewals are done through this repository based on the Craft ID you have, rather than on multiple sites from different vendors, as with WordPress.
The disadvantage of a much smaller plugin repository is that you are more likely to have to write the needed functionality yourself. And here we face much greater technical complexity and required knowledge of the Yii framework.
The topic of plug-ins is directly related to the security of the site.
As the most popular solution on the market, WordPress is also the biggest target of attacks and data takeover attempts. According to a statement published by WP Clipboard, there are 90,000 attacks on WordPress-based sites every minute, with:
vulnerability to attacks increases if the site is not updated regularly: 61% of infected sites run on outdated code;
51% of vulnerabilities are due to outdated or poorly written plugin code, 37% originate in the code of WP itself, and 11% in theme code.
The conclusion from the above is that for the security of the site and its data, it is necessary not only to perform regular updates (which can cause damage to the site, as we mentioned above), but also to have additional tools to increase the level of security, monitor the status of the site and the timeliness of the code, or detect intrusions.
Security is a key development factor for both WordPress and Craft, but it’s worth considering a few factors that set Craft apart:
Craft has a much more modern code base compared to WP, and is based on the large Yii framework – this allows more advanced security solutions to be implemented into the cms itself.
The base installation of Craft has strict security settings enabled by default – many potential threats are minimized from the start.
Craft does not use themes and has a much smaller and more specialized plugin base – this reduces some of the risks from vulnerabilities or obsolescence of external code.
Many of the basic security-related functionalities in WordPress require additional plugins – for example, WordPress does not have functionality to block access after failed login attempts.
Craft’s incomparably smaller share of the CMS market means that applications built on Craft are exposed to far fewer attacks.
WordPress does not have the best reputation when it comes to performance and speed of solutions built on it. Optimization from this angle becomes more difficult the more complex and extensive the project is. Usually, additional plugins are also needed for caching and optimization solutions. Craft gives here the opportunity to achieve better results thanks to several issues.
WordPress is left here with its baggage from the past, i.e. the structure prepared for a blog application: all content and related metadata goes into two tables (wp_posts and wp_postmeta). With a larger site, these tables can have millions of rows, and it’s easy to find yourself in a situation where more complicated queries to the database start to noticeably slow down the site’s speed.
Craft, as a solution designed from the beginning for flexibility and performance, has a much more elaborate database structure, e.g. each content section gets its own table, queries are optimized for specific content.
Craft does not generate any frontend code by default, nor does it impose any schemes in this regard – the developer has full control and freedom of solutions. In WordPress, much of the optimization involves disabling or modifying solutions provided by the system. One of several possible examples: if the application does not use the block editor, we have to disconnect the associated css ourselves, which is applied to the page header.
Craft has a significant advantage here: key CMS functionality, which in WordPress must be provided externally (e.g., ACF), here is part of the system itself, so by design it is better integrated and optimized as a whole, with the mature Yii framework as the foundation. Less need for plugins and their potentially better quality results in less chance of introducing poor quality code into the project. Last but not least – the lack of themes and the need to prepare the frontend from scratch means full flexibility and the possibility to optimize the solution for specific project assumptions.
None of the CMS compared offers a built-in and advanced system for SEO, which offers content analysis for keywords, generates a preview of search engine and social media visibility, generates code with metadata or a site map with an index for search engines – these solutions must be provided by a plugin.
WordPress in combination with Yoast SEO plugin is indicated as one of the best SEO solutions on the market. Yoast’s counterpart for Craft is the SEOmatic plugin; unfortunately, the plugin is not free and using it currently means an additional cost of about $100. However, you can also find free solutions in the Craft repository, which may be sufficient.
Optimizing a site for search engines is not only about properly prepared site content and metadata, but also about performance and application accessibility, i.e. parameters such as time to display content, time to full interactivity, size of downloadable data, etc. Craft here offers potentially greater and already mentioned performance optimization opportunities.
WordPress is a free open-source system and will remain so. In theory, even a complex site can be made completely cost-free – that is, without using developers, using one of the free themes and installing the necessary free plugins. Costs arise when there is a need to purchase a more professional theme or advanced plug-ins with a commercial license – usually, however, these costs are small, on the order of tens-sometimes hundreds of dollars.
Craft offers a free version, but it is limited enough that for more complex projects it is necessary to purchase a license. Currently, the Pro version of the system costs about $300, plus $60 to renew the license for each additional year. Also, a significant portion of the plugins available in the repository are paid, and they tend to be noticeably more expensive than similar solutions for WordPress. The choice of Craft in the vast majority of projects will also require the help of developers, as it requires knowledge of the code and, for the most part, preparation of the configuration and frontend of the site on your own.
As for cost, WordPress will presumably prove to be the cheaper solution to implement and maintain.
In summary, we can formulate the most key differences between the two systems, which have a decisive impact on the choice of solution:
Launching a site on Craft requires programming skills – we have to prepare the frontend ourselves, it is a CMS aimed largely at developers.
A WordPress-based solution can be built based on off-the-shelf themes and plugins, but this will involve greater vulnerability, weaker optimization and performance. Craft has an optimization advantage here, lacks the concept of a “theme,” and offers a smaller plugin base – thus requiring more developer effort for complex projects.
Both systems can be the base for a development team to build a project from scratch, but Craft provides more built-in functionality, better database structure, incomparably better structuring and optimization of the underlying code (Yii framework). WordPress at the start requires the use of third-party solutions for custom fields, twig views, multilingual support, etc., and pulls back compatibility related to market position and being primarily a blogging platform.
Do you like this article? Share it!
Co-founder, Head of technology
Are you looking for an experienced programming team? Let’s talk.