DEV Community

Cover image for Why wordpress?

Why wordpress?

Fraser McTaggart on September 05, 2020

Why not Wordpress? Without a doubt the most popular content management system in use today is Wordpress. It is said that 30% of the whol...
Collapse
 
philliprichdale profile image
Phillip Richdale

WordPress is worthwhile for larger projects too.

I've done quite a few non - trivial projects in WordPress. To get this out of the way: Yes, like many CMS projects, WordPress was built by people who couldn't program and it shows. The architecture is a historically grown hodgepodge with some very strange things going on in it. Hardwired URLs and Shit. Totally bizarre.

However, this, strangely enough, comes with some counterintuitive advantages. For instance, because just about everything is procedural in WordPress, one error breaks your entire callstack which in turn has new bugs your project often show up immediately. That actually has turned out to be an advantage I didn't expect.

Advantages of WordPress
Here I'll give you a few advantages of using WordPress for your projects, even if they are larger.

Child Templates
Templating done right. No bullshit inner platform like blade or twig or smarty or whatnot. Existing templates (themes) get piped through child templates, and aside from some small boilerplate, you just put your changes into the child folder, all the rest gets fetched out of the parent folder. You can take a super sophisticated commercial theme and modify it just the way you like it without even touching the original. WordPress rules here.

Plugins
WordPress press may be shit, but you can work around that in 20 minutes or less. Writing a Plugin that integrates into WordPress is trivial. As is integrating your own dashboard pages. Auth/Auth, DB access, Rest Api with auth tokens and such is there and ready to use, the rest you can to yourself.

Time to market
Unbeatable. I'll have WP staging up and running including the custom post types that resemble the custom object types we need within the hour. The editors can start doing their thing before I write the first line of code.

Dashboard isn't scary for regular people
This is a big one. Getting a regular user familiar with WordPress dashboard goes very easy. Onboarding someone into you workflow can be done on the side.

Good security
Stop laughing. 200 million active installs make for very good security. All bugs and severe exploits are shallow and fixed within days. There is a huge market for third party security services and cdns for WordPress. Makes things very easy.

Existing plugins
An abundance of 3rd party plugins for all problems you can think of. Including some you wouldn't think of. WordPress orchestration with a Plugin for instance. Cluster management at app level if you will. Very strange, but it works.

Lots of FOSS tools and libraries
WP CLI, WP model, etc. All finished and ready to use. For every WordPress problem there is people have already made a solution.

That's a shortlist from the top of my head. Further reading and details here: richdale.de/into-the-abyss/

My 2 cents.

Collapse
 
fmctaggart profile image
Fraser McTaggart • Edited

I appreciate your response. You make many valid points!
Security for the core is great, however I've heard that there are issues with some plugins
and that this would be the main source of a security issue? This is just what I've read however.

At what stage would you not consider Wordpress for a project? Do you feel that Wordpress is the best tool for websites full stop? Would you be able to provide an example of a larger non-trivial site using Wordpress ( not using the REST api )?

Collapse
 
philliprichdale profile image
Phillip Richdale

If you know you're application is going to be microservices from the get-go and there is a clean app-model in place and the core technology will not be PHP then not using WP is pretty much a no-brainer.
If you're going to have applications and APIs as a first class citizen in your project and it must scale along multiple dimenions, WP is a bad choice. Especially if you have a team of experts and the PO/Customer knows what he wants and the architecture is properly designed. Using WP in such a scenario would be silly.

However, if time to market is your constraint and you're dealing with a customer who doesn't know what he/she wants, then WP is a very good choice. Prototyping a larger app in WP can be hackish, but time to market is next to none.

WordPress can also make sense as a pure CMS with the application streched out behind it with tons of microservices and some gluecode to handle editing and content distribution. If you have caching and search and all the tiny tidbits seperated out, WP is small enough to still service as a neat editing environment.

Collapse
 
taufik_nurrohman profile image
Taufik Nurrohman • Edited

Security for the core is great, however I've heard that there are issues with some plugins and that this would be the main source of a security issue?

Your computer operating system is secure, but the software that you have installed isn’t. The operating system might have it’s own secure and closed API, but the external softwares that depend on the operating system may still be able to use the parent language that is more raw.

WordPress has their own secure and closed API, but every plugin can still be able to use the parent “language” of WordPress, that is PHP.

At what stage would you not consider Wordpress for a project?

IMO, any project that does not contain blog posts.

Thread Thread
 
fmctaggart profile image
Fraser McTaggart

Correct me if I'm wrong, as I haven't created a plugin for wordpress. But plugins can be created and submitted quickly and easily judging by the comments below. They can then be installed easily and without thought, by users that don't know the implications. Perhaps giving plugins unregulated access to server-side code isn't ideal?
The list of vulnerabilities and exploits is pretty extensive for wordpress plugins - surely there must be a better way?

Thread Thread
 
taufik_nurrohman profile image
Taufik Nurrohman • Edited

They can then be installed easily and without thought, by users that don't know the implications.

You can install a plugin with syntax error in it and then just get a blank screen.

Perhaps giving plugins unregulated access to server-side code isn't ideal?

It’s your web hosting provider duty.

Surely there must be a better way?

Just keep it up to date, and follow the support forums related to the plugin. Security holes sometimes come from old plugins that are no longer updated (but you don’t know and just install it anyway).

Using official plugins or paid plugins must be better (since you could easily complain about things).

Collapse
 
codefinity profile image
Manav Misra

That's more than 2 cents! 😼

Collapse
 
gsarig profile image
Giorgos Sarigiannidis • Edited

I mostly build custom sites on WordPress. I believe that a major distinction that needs to be made is that between a custom made theme and setup of a ready-made theme from ThemeForest or elsewhere without touching the code most of the time. Most of the drawbacks mentioned in the article are related to the second approach.

The main benefits I find on WordPress are the following:

  1. Great documentation and a vast community. It is very rare that you have a question that hasn't been answered already. Even if it doesn't, though, it's fairly easy to dig into the core, figure out how things work, and build it yourself as a plugin.
  2. A great content editor that is familiar to most people due to the project's popularity. I've seen a lot of clients asking beforehand for the site to be in WordPress because they are already familiar with its environment.
  3. Easy to find support. being open source and so popular makes it easy to find support. A few years back I've worked with a few companies promoting their own custom CMS and clients preferred them. In the long run, it turned out that most of the time it was a drawback, as this locked them to that company, which charged excessively even for simple tasks, and because of the custom implementation they couldn't assign the support to someone else. WordPress, on the other hand, is probably the most convenient when you need to find someone to support your site. After a few years, those clients came back asking to remake their site, this time specifically with WordPress, for the aforementioned reason (and some of the companies ditched their own CMS for WordPress).
  4. Good backward compatibility. That has been criticized by many developers and in some regard, it can be considered as a drawback too, but it sure has its benefits, as I've been updating websites built almost a decade ago with no issues.
  5. Gutenberg. This has been one of the most controversial topics, as people who prefer to build sites based on ready-made themes tend to hate it. Personally I love it because if you are a developer making custom themes, it can give you unprecedented freedom to build your backend however you like, very easily. In fact, the way Gutenberg works by default, outputting plain HTML, allows you to build a very fast website, minimizing the database queries.
  6. You don't have to use WordPress for your frontend if you don't want to (see Headless WordPress). You can build the backend with it and implement your frontend in whatever technology you like (e.g. JavaScript), using the WP Rest API.
  7. Due to its popularity, WordPress is often the first (and sometimes the only) CMS to be supported by a new service with official plugins.
  8. WordPress is a very much live project, constantly evolving, with a clear roadmap for the next few years.

Of course, that doesn't mean that WordPress is perfect or that it is the right tool for every job. Having started as a blogging platform inherited some problems that are hard to get rid of. For example, the database structure could be better, there could be less focus on backward compatibility in favor of embracing new technologies and multilingual support should be implemented to the core instead of relying on third-party plugins (fortunately, the latter is something that will, eventually, happen as it is in the roadmap).

Collapse
 
fmctaggart profile image
Fraser McTaggart

Thanks for the thorough response! I believe that I did make it clear that the main issue I had was with premade templates. You mention that you don't use prebuilt templates - how do your sites perform in lighthouse for example? I have seen near perfect scores, yet this is very rare and realise that templates add a lot of unneeded bloat. Is this an issue with the premade templates, or are there more fundamental issues?
It is a huge community, that is a great point. It is something that is easily overlooked. I haven't needed to use the community for Netlify CMS or Strapi as the both work as described in the docs.
I have read about the REST api for wordpress, however haven't used it. Perhaps I'll give it a shot.
As I mentioned, I see that Wordpress can work in many scenarios and can see why people use it. I've been asked to use it a few times, but turned away the jobs instead.
Do you feel that you are locked into using wordpress now? Do you just do wordpress sites, or do you do other things too?

Collapse
 
gsarig profile image
Giorgos Sarigiannidis

Premade templates aim at satisfying a broad audience, so they inevitably come with too many features that you don't need. Also, they rely too much on third-party libraries and frameworks (Bootstrap, jQuery, etc) that bloat the end-result even more. So, it is very likely that you end up with much more CSS than you actually need and load dependencies like jQuery that you could avoid if you aim at a high score on PageSpeed tests, which, by the way, I don't think that it should be an end in itself. The important thing is for your site to load fast to your users without compromising functionality.

In general, frontend issues that PageSpeed scores report have nothing to do with WordPress and can be dealt with like they would in any other solution. You can build a theme in WordPress with any HTML markup, CSS, and JS you want, without a CMS-specific restriction.

On the other hand, WordPress, as a CMS, queries the database, and if you implement every piece of your content using meta fields you might end up doing a lot of queries, some of them expensive, that could be avoided. Caching can do a good job at speeding things up, but on this subject, the new Gutenberg editor helps even more, because it can store your content in plain HTML, no matter how complicated your content's structure might be (unless, of course, you have very specific requirements on some occasion). If you know JavaScript and React, I believe that you might like Gutenberg, as it gives you a lot of freedom when it comes to building your site's backend.

In the end, it is not too hard to build a fast website with WordPress. In fact, even improving the speed of a site with a ready-made theme isn't always out of the question. It just depends on the quality of the theme, on the amount and the quality of your plugins, and the site's general functionality. Of course, custom or not, a WordPress site will never be as fast as a static one, but I think that this should be the case with any dynamic CMS.

At the end of the day, it depends on the project's requirements. If the site is relatively small and doesn't get updated very often and speed is the absolute priority, a static solution, with Headless WordPress or something else, would be better. If, on the other hand, it is big and needs to get updated too many times even within the same day, then maybe a more classic approach is preferable as the rebuilding process can be time-consuming in a static solution, as far as I know.

As for the last question, before WordPress, I used to work with Joomla and I had some experience with Plone too (waaaaay back). I also do a lot of frontend-work (not always for WordPress) and occasionally some small PHP-only and JS-only projects. Before getting involved with development I was an Information Architect, which didn't have much demand on Greece, so I shifted my interests.

I wouldn't say that I feel "locked" in WordPress in any way. I like building themes and plugins and there is always something new to learn, which keeps me from getting bored. In fact, JAMStack with a Headless WordPress is something that I intend to try at some point, as I find it to be a very interesting approach for many scenarios.

Thread Thread
 
fmctaggart profile image
Fraser McTaggart

If the user was looking for a basic 'brochure' style site, would you ever use a website creator, such as square space or wix? Why or why not?

I agree that page speed isn't the most important factor, yet it isn't something that can be ignored. Page speed has some sort of weighting in Google's search rankings and can be a good place to start when reviewing a site's performance.

I hadn't heard about Gutenburg before your original post, I'll have to go and take a look. Being Scottish, I like (freedom)[youtube.com/watch?v=lLCEUpIg8rE].

In regards to jamstack, I agree that it usually doesn't make sense to rebuild 100 times a day. For 'really' dynamic content I would use an api call instead. But there have been many advances with rebuilds and I can only see it getting faster. Gatsby and Nuxt ( and I'm sure many more frameworks ) have atomic deploys where it can take less than a second to rebuild.

I'm glad the post has sparked a bit of discussion! I have also used Joomla, a bit of a blast from the past. I just checked and they are still in active development. TIL.
I suppose I feel that the nature of wordpress, with plugins etc. makes it easy for someone to make a bad performing and bloated site. I feel it's important to strive for the best solution, which I usually find isn't the quickest one. But that is just my own view and I appreciate that not everyone has the same mindset.

But Philip has raised some very valid points as well which has helped me see the other side of the coin.

Thread Thread
 
gsarig profile image
Giorgos Sarigiannidis

If the user was looking for a basic 'brochure' style site, would you ever use a website creator, such as square space or wix? Why or why not?

Personally, I wouldn't for the sole reason that I am not familiar with it and learning it would require some time. I might prefer using a ready-made WordPress theme instead. I wouldn't be against using Wix, though, if it was for a small site that you are certain that you will not need to extend with extra functionality that needs custom development in the future.

I've seen nice implementations even with Wix and ready-made WordPress themes.

Knowing your tools well and being able to make the most out of them depending on the occasion is often more important than using the "best" tools that there is in a suboptimal way.

Collapse
 
taufik_nurrohman profile image
Taufik Nurrohman • Edited

Have you used wordpress?

Have just experimenting with it.

Would you recommend it to clients?

I would recommend Mecha. It only weigh around 300 KB uncompressed 😄

Collapse
 
zerosonesfun profile image
Billy Wilcosky

This is why it pays to read through comment sections. I’m definitely bookmarking Mecha. I do use WordPress for my personal blog but now I’m tempted to switch. Hmm 🤔.

Collapse
 
fmctaggart profile image
Fraser McTaggart

I've never heard of Mecha but it looks great at a glance. At that size, who could complain!
I personally don't use the LAMP stack anymore, but if I switch back then I'll definitely give it a shot

Collapse
 
jeremyhixon profile image
Jeremy

Another upside is the number of folks who can help a client maintain and update a WordPress site. They typically don't want to pay a full stack developer to perform menial tasks. There's a pool of less expensive talent to choose from for that sort of, day to day, thing.

Collapse
 
fmctaggart profile image
Fraser McTaggart

I totally see that. There are an abundance of local wordpress developers that can offer that sort of service.
On the flipside, I suppose that any menial updates etc. should be able to be done inhouse anyway, that is ideal scenario of a content management system?

Collapse
 
jeremyhixon profile image
Jeremy

Probably. I find that a lot of my clients opt to hire "web designers" who then install page builders like Elementor and go to town on the site. While the core of the theme I build is typically still there a lot of it is masked by what they do "in-house". 🙂

Thread Thread
 
fmctaggart profile image
Fraser McTaggart

There is nothing worse than seeing something you worked hard on be butchered by users, I suppose it is the nature of the job. I'm usually quite strict with what things I allow the client to change now. :/

Collapse
 
endymion1818 profile image
Ben Read • Edited

🖐 I developed themes & sites for clients And agencies using WP for many years.

Lately it feel like the core team is hostile to new developers, by tying our hands with Gutenberg, limiting tech to old versions so that it’s hard to learn how modern code is written, and making development hard with an inconsistent api.

I moved to the JAMStack because I can see what WordPress team want it to be: a Wix competitor, or a tool for non techies to use.

To be fair WordPress has been used by agencies that want a fast turnaround for a quick profit. These places can be difficult places for developers to work in.

I think we should not be afraid to be moving on, WordPress will always have it’s uses but as developers we have huge buying power. The JAMStack has a way to go, but it has barely begun, one day soon it will parallel WP in terms of capability.

More: deliciousreverie.co.uk/post/dont-f...

Collapse
 
fmctaggart profile image
Fraser McTaggart

Thanks for your additions. I appreciate your viewpoint that it is taking work away from developers and into the hands of users. This isn't something that I considered to be honest. I don't think this is something to attribute to wordpress though, as change always happens and we have to move with the times. ( which I appreciate you are doing )
I agree with the sentiment that they are aiming at non-techies on the whole. That is why there is such a large userbase, so it makes sense for them to focus on this route I suppose.
Is there anything in particular that you feel the jamstack is lacking at the moment?

Collapse
 
endymion1818 profile image
Ben Read

Thanks. I feel it’s important to show the team are no longer improving any of the developer experience and this impacts employability as well as the experience. Therefore as the work decreases more people will find themselves less employable as I was starting to experience.

What is the JAMStack lacking? Only 2 things:

  1. Notwithstanding my previous comments 🤣 low-code or no-code launching, though Stackbit, Gatsby and others are working on this.
  2. Ability to preview content as you write. This is something high on the list for the content team I work with. We’re pretty close though, As well as Gatsby Preview & Prismic previews, TinaCMS connected to a backend is probably going to be a good solution to that one.
Collapse
 
calucon profile image
Simon • Edited

Yes, I'm activly using Wordpress for my gaming clan's website.
The advantages I see with wordpress is that it's not much effort to maintain and offers a good editor for content. And if there's something missing, there's usually a plugin for that.

Also I've already developed some plugins for clients at work and while it takes some time to understand how everything works internally (or at least the parts i've touched so far), the development process is pretty easy.

So if you'd ask me, I certainly would recommend Wordpress. But it all depends on your clients needs if wordpress is the best tool for their use case

Collapse
 
omarel profile image
Omar Elbaga

I appreciate you taking the time to write this up. I must say as a developer I really dislike wordpress and do feel it's on decline with the advent of react and vue. WordPress is so sloppy and ridden with security problems. It's just that wordpress was all we had. Now there are new options it puts light on how annoying wordpress really was. Clean front end HTML javascript with a headless cms is probably the continued wave of the future.

Collapse
 
taiger profile image
Tai Travis • Edited

I use WordPress for small personal blog projects. If there is any customization at all though, I build it in Drupal.
Why? While WordPress plugins tend to solve a specific problem, Drupal modules work together to extend functionality. Drupal 8 is built with Symfony components, which are very well written.
Drupal has a steep learning curve and the defaults suck, it's true. However, I couldn't imagine trying to build anything reasonably custom on top of WordPress.. unless it was just a blog or brochure-site.

Collapse
 
scottsawyer profile image
Scott Sawyer

I am giving a presentation this Friday at Drupal Camp ATL on how to enhance the Drupal editorial experience, you may be interested in checking out

drupalcampatlanta.com/2020/session...

I use this approach to create marketing / brochure websites with Drupal and have received excellent feedback from customers.

At this point, I loathe working with WordPress, it feels like a toy. Though my biggest complaints aren't so much WordPress but the approach of so many "WordPress jockeys" who opt for commercial plugins and themes. These rarely update with WP CLI, and the "developer" typically doesn't give the owner access to renew the licenses. This leaves the owners site in a compromised position, difficult to maintain.

While the premium and freemium WordPress market has made people a lot of money, I feel it's ultimately bad for the WordPress ecosystem. Also, the WordPress plugin issue queues suck. Why can I not filter results by version?

Collapse
 
mnvx profile image
Nick Mathias

So if not Wordpress, then what?

Yes, Wordpres is force. But for example, I use Laravel for complex sites or Hugo for simple static sites.