What is WordPress? (really)
Introduction
There are so many feelings and opinions flying around, that even if you don’t know anything about web design or programming – you’ve probably heard of WordPress.
We’ll try and clear things up a bit.
HTML is super great
It’s so cool. It’s what the internet is made of: web documents. CSS is great too – but it doesn’t play as large of a part in this story.
HTML is great. But – at some point, you start to think –
Wow. I have a lot of pages now. Whenever I add a link to my header, I have to do that on 23 pages.
Writing the HTML all by hand is fun – until a certain point. It’s not because we’re lazy, it’s because we want to be efficient. If you can just create 1 menu – and use it in many places – then you have more time to think about the bigger ideas – instead of just typing so much.
That’s when something like PHP comes in handy.
PHP is great too
Sure, you could write that server-side stuff with Perl or Java, – but for many reasons they didn’t fit this use-case.
With PHP, you can partial things out into components and stitch them together on the server. PHP is a server-side scripting language. You can debate the details, but it’s a hell of a templating system. It’s hard to talk about WP if you don’t quite understand PHP yet. That’s why we teach PHP and build out a mini routing system in the course at PE.
And then you want to “do stuff” with forms…
and you need to do some stuff on the server… You can use all sorts of languages to do things on the server. You could “do stuff” with Perl or Java – but then this other language ‘thing’ appeared called PHP. It had a weird story… and it’s kinda a Frankenstein’s monster that’s really a templating language that also is a programming language? So – basically, it’s a system for writing HTML on the server – and it can do ‘stuff’ based on user interaction and present updated HTML documents to show the changes. People liked it. They didn’t have to compile it like Java – and, well – everyone started using it.
At the very least
PHP can help you stitch together .php files – and parse them and spit out a full .html file. That’s really cool for just keeping things modular. A clear example is when you start realizing that you are changing the menu links on your site in 10 places instead of one. You can break that header and that footer into .php files (I can’t really write code here… or I’d show you) – but just imagine that you can combine little files and it’s really modular. Working with components makes life more fun.
So, PHP can help you with many of the situations you’ll face. You can make forms and use query strings and cookies to switch out templates and sort things, and do all types of dynamic stuff. But if you’re going to create your own CRUD system from scratch, you’ll be responsible for building out a whole administration panel (basically a front-end for the backend) that is 100x more complicated than your visitor-facing front-end.
Web 2.0
The web was just about sharing and reading documents – until it wasn’t. People wanted to let users upload text and images and dynamically add their content to sites – just like this post! So, here are some words… and they will get saved to a database with a location and all the info needed to recall this post. Then when you go to the page – the URL hits the server and finds the PHP page + parses it + sees that it’s about this content + goes and gets the content from the server/database – and then creates and serves up an HTML page! And user login/authentication… and all the stuff you are used to using as a user.
But database queries are hard!
Maybe not that hard, but they are more work – that’s for sure. Tags and categories and bears, oh my! Yuck! Do I really need to build out a whole administration panel (the front-end for the ‘back-end’) – and set up a database and the functions to retrieve stuff from the database and backups of the data?… Why do we have to roll our own blogging system – when it’s so common? Can’t we just write stuff and make it look cool and get internet famous?
WordPress.org – the open-source blogging platform
It is born. It’s a framework for building blogs. Mostly just the one ‘post’ resource – but also taxonomy, the category, and ‘tags’ and stuff… It’s like a newspaper (press) for your words!
But it wasn’t just a PHP framework – it was also becoming an ecosystem of ‘themes’ and ‘plugins’. Now, with no programming skills, you could set up a WordPress system – and choose a theme – and add some custom functionality via an array of premade functionalities called “plugins.” You could choose from widgets and customize a blog. You could monetize it too. You’d have to host the code and set up a server with Apache and MySQL and PHP (LAMP) (MAMP) / but even that could all be set in place by your hosting provider. This is how all the terrible hosting companies came into play. (stay away from GoDaddy!)
WordPress.com – the version hosted by the mothership
The company that made WP (automatic) needed to make some money, right?! And they knew that people wanted to set up blogs – but didn’t want to deal with the hosting. There were tons of companies like Tumblr and MySpace and Live Journal and Bloggr – and soo many. This was the WP version. You pay monthly and you can do all that stuff above.
(( For the rest of this article – when I talk about WordPress/WP, I’m referring to the self-hosted wordpress.org stuff (not wordpress.com ). This is another reason for the confusion ))
Cha cha cha cha changes
People wanted to push WP to be more and more. Over the years, things were added. Then more things. The code base got bigger and more functions were made and the naming conventions didn’t always follow the same patterns. PHP was evolving in the same way. Because of this – PHP and WordPress are (sorry) aren’t as pretty as they could be in the code department! that’s because you can’t just rewrite everything anytime you want – because 75% of websites use PHP and 30%+ of websites are built with WordPress… (at some point, it was closer to 60% before Squarespace and the static site generators) – so – yeah! They have to be backward compatible.
A full-on Content Management System
Add in the changes and tack on Advanced Custom Fields (plugin) – and you’ve got a really serious CMS. It’s not just “posts” anymore. You can build out super impressive admin panels. And it’s free?!?
So – that’s what it is.
A lot of people say WordPress is “Bad” / or “We used WordPress at work and didn’t like it” / or clients say – no – “We don’t want a WordPress site”
? It’s because they don’t know what they are talking about. They had a bad experience. It’s ok. The client shouldn’t really be choosing the tools anyway. Maybe they got a bad ‘theme’ or a bad developer – or had unreasonable expectations. They could have just lost their login and blamed it on WP. It’s all about teaching the client about the system – and customizing it to their needs. There are many other similar solutions like Joomla and Drupal too.
What does it mean to be a “WordPress developer?”
Yeah… it’s confusing. Is it a person who uses the platform – but doesn’t code? Is it a person who uses the platform but writes a little custom CSS to add some flair? Is it someone who helps clients pimp out their wordpress.com site? Is it someone who installs a WP theme for you and adds your logo? Is it someone who customizes a WP theme and configures plugins? Is it a theme author? a plugin author? Do they build out custom themes for clients? Are they a PHP expert? Do they run a huge massive multi-site network of WP sites? Maybe they contribute to the WP framework. Maybe they author blocks with React.js and never write a line of PHP. Maybe they write all their front end with JavaScript, and you use the wp-json API to retrieve data from a cloud WP install. Maybe they work at Automatic? They could own/run a WP consultancy? Who knows!!!?!?!? There are just so many ways you could be a developer who uses WordPress. If someone is lumping all these types of jobs together and writing them off as “not real developers” or people using a “dead language,” – then you’ll know for sure that they don’t know what they are talking about. That’s OK. Most devs are a little overconfident and headstrong. Eventually, they’ll grow into their dev maturity.
Freelancing is hard
When we start out – things go wrong… we take on too much stuff – over-promise / over-deliver / and then freak out – and yeah… we have a breakdown / the client gets screwed… things go wrong — and we all end up blaming WordPress. If this wasn’t you – it was likely the person before you. (side note – if the client isn’t willing to pay 1200+ then the site probably shouldn’t get made) A lot of people have a powerful optimism when they start and they try and make a complex lawyer site with a premade theme for $500 and months later realize that the theme can’t do what they want… and that they don’t have the know-how to change it… and yeah… now it’s months overdue… and you’re never going to get paid for all that time. WP sites can be inexpensive to set up but that also means a lot of cheap people and fly-by-night developers get involved.
What should we use instead?
There are so many options! And we investigate many of them throughout #DFTW. In the end, the students get a chance to try everything and decide for themselves.
I’ve spent almost my whole career trying to get away from WP and trying to learn the fanciest ‘coolest’ frameworks – and well… let me tell you what: After all that (10 years later), I find myself reaching for WP often. Try writing your own Laravel CMS. Try out Prismic and Contentful. Deal with React and cloud CMSs for a few years… and you’ll develop a new appreciation for WP’s stablitity. ~ @sheriffderek
But the key here is not to learn WordPress. You’re learning how a framework works. You’re learning to read the documentation. You’re learning to plan out your data and how to design content types and fieldsets. You’re learning “how to be a developer.” Everything you learn transfers to every other situation. Anyone who can’t see that doesn’t have their feet on the ground.
WordPress ticks the boxes for MOST projects. We built Perpetual Education with it and here we are, teaching it to students with great success. You can even skip the PHP parts entirely – and just use WP as a cloud CMS and populate your JS app content with it.
WordPress is a PHP framework and a Content management system
You can learn just a little PHP syntax and get going. It’s a great example of server-side rendering – and CRUD. It’s very unlikely that you’ll go an entire career without building something with it – so, just try and see it for what it really is. The best way to learn is to build a custom theme. (the paid themes are mostly trash – so, that’s why people get turned off) it’s a great way to build a portfolio. https://developer.wordpress.org/themes/getting-started/
Fun fact: http://timenoplace.com – was @sheriffderek’s first WordPress website from probably 2011 – and it’s still up and running! Pretty cool. It has ‘artists’ ‘releases’ ‘videos’ and ‘posts’ – and they are all connected through relationships. You can learn A LOT with that project in a short time. We highly recommend you build a project like this instead of spinning up a bunch of toy React apps. Then you can use the wp-json to feed a JavaScript framework version if you want later.