Well that went quick.

WordPress is 20.

As the top of this site mentions, I’ve switched this site over to its original theme built in early 2004. Truth be told, I can’t remember how I even heard about WordPress. I was working in the web for a book publisher then as a ‘Web Development Executive.’ I used to read other tech ‘web blogs’ around that time, so maybe one of those? No idea. But here we are. If I remember correctly, I decided to make a blog for no real good reason apart from a desire to:

a.) build a blog
b.) spout random crap to mostly no one. A precursor to doing c. social media.

I think what initially attracted me was it was easy to set up, and people like myself (frontend developers, I guess, before I even knew the term existed).

  1. Create a database from some god-awful UI like cPanel or something
  2. Populate wp-config.php with database creds
  3. FTP up some files
  4. Click a few buttons, and we are away

I had done only a little PHP at this point, but again WordPress made a lot of things ‘just work’ like The Loop, which still works today.

<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>


With these simple tools, I was able to create my own theme easily using mostly HTML and CSS and a sprinkling of PHP. It wouldn’t win any awards or pass any tests (not that that was really a thing), but it was mine. I could create a database-driven website with not much more than a text editor (my daily driver was either FrontPage 98 or Dreamweaver by this point) and an FTP application. That was it. Straight to prod. Apart from the general ability to break things directly, the overall experience was great, seeing changes happen straight away by editing a couple of lines of code, something that is sorely lacking in today’s tooling universe (notable exception Eleventy and a few others).

Gradually, as time went on, WordPress and plugins built by the community got better and better. A notable UX/Design overhaul of the admin by Zeldman in 2.5 (2008?) made it one of the easiest CMSs to use. The introduction of custom post types and custom taxonomies suddenly made it a viable option for client websites, so when I was in agency/consultancy land, we were suddenly using WordPress for bigger and bigger sites. ACF (2012/2013?) turbo-charged that, allowing it to be turned into a fully-fledged CMS, way beyond a blog. Really, unless you were doing heavily transactional/user-generated stuff, it really was ideal for a large number of small to medium and even large organizations. We built lots and lots.

I went solo in 2012 and pretty much specialized in building websites in WordPress. It wasn’t a conscious effort, but there was plenty of work around, I knew it well, and I liked it. As a frontend dev, I was able to do a lot more than I would have probably been able to on another system, mixing backend and frontend development and being able to deliver projects almost entirely on my own unless they were on the larger/more advanced side. I’ve built sites large and small, simple and complex, from a single-page site up to multi-site, multilingual for global organizations such as ONE.org that I’ve maintained for nearly 10 years. Even at one point, working with Jimmy Wales to attempt to create an editable news wiki site powered by volunteer users.

The switch to block-based sites took some time, and the transition between them seemed a bit rushed at first, and dare I say aloof. I had very little interest in learning React, and given recent discussions around the topic, I am glad I did not do so. But ACF to the rescue again! I was able to build custom blocks via ACF and PHP, which made me happy. It took me some time to really understand where they were taking the development of WordPress as it did somewhat feel it was away from people like myself, theme developers. I’ve always had a strong belief that I should not be a gatekeeper when it comes to people being able to control their own site. However, I also saw it as my role to make WordPress as easy to use for people as much as possible, so I could step away once my bit was done. I see now that things have matured, and the ability to do almost everything in the admin enables a range of admin types to create, edit, and control a website without having to worry about FTP, build tools, databases, PHP, and being able to do everything in the browser. It probably means a new type of developer/super admin that can build sites using the editor and hand it over to editors. This will make it much more accessible to many more people wanting to learn how to build websites and not have to worry about how to install node.

Now I build WordPress sites using custom blocks built around client needs. Theme.json allows me to translate design systems into the settings accessible via the front end and admin.

It may well be that the need to hire people like myself diminishes over time, and themes become simply a screen in the admin. Just like WordPress initially allowed more people to build content-managed websites in the first place without needing a computer science degree.

This is the way.

And maybe in another 20 years, I’ll be like one of those COBOL developers that’s brought out of retirement to fix some WordPress 5.8 build that’s got 60 plugins installed, and no one knows why it’s white screening.

So anyway, the long way around to say here’s to WordPress. Happy Birthday.

Day 19 – One wish for WordPress granted

Prompt 19/20

Blog: If you could have one wish for WordPress granted, what would it be? Post your response on a WordPress website and link it in the comments.

This is so so minor, an inconvenience, a slight annoyance, and probably a waste of a good wish. But there is one user journey I try and do all the time from WordPress when I update a post or page the ‘View post’ link is waaaaaaay down to the bottom left.

Screen grab of new post screen on WordPress

I know it seems really minor and I know there is the permalink panel, but something like this would make my day so much easier (not even moving it just a new link top right next to the Update button).

Screen grab of alternative screen for post visibility

The main reason for this is I edit a lot of posts and pages (that are already published) and often -click on links to open in a new tab to look at them. So my user experience is edit edit edit, click update (top right) – wacky races with the mouse to go to bottom left in time to click ‘View post’, and if you don’t make it in time then it’s like 3 clicks to get to the url. The above solution would be inline with the Update button.

Again, I should not be trusted with wishes. Genies; please don’t engage with me.

I should probably just make a plugin for this right?

Day 18 – Post from the App

Prompt 18/20

Blog: Download the WordPress Mobile app and post a post from the app about your experience posting from the app. Post a link to your post in the comments.

It’s been a while as I used to have the mobile app. Didn’t really ever use it. Didn’t blog enough to justify tbh.

So far it’s pretty good. Took me a while to orientate, the formatting buttons are below the block and some block functions are off screen due to real estate. But after a couple of minutes it seems pretty good.

Block insertion is good. I can add new blocks pretty easily.


Unfortunately appears there was a few bugs on the app, I think maybe because I am on a hosted solution via WordPress.com login? So I’e switched to desktop to finish this post. But if that was sorted I can see this being a good solution, it seems to have all the things you have on desktop in a tiny space, very well designed, easy to use. I wouldn’t use it for long form writing, but for quite posts / edits this is perfect. I shall keep it on my phone.

Day 16 – AI

Prompt 16/20

Blog: Tell us your hopes (or fears) for the future of AI in WordPress. Post your response on a WordPress website and link it in the comments.


I think this Tweet and video from Joe Hoyle sums it up pretty well.

The conversational nature of it is something I think has massive potential. I am a Web Developer and as such I know the general lexicon – row, column, font sizes, tables, hex colors… which might seem natural to us but is not to a wider variety of people. One comment I hear over and over again from clients (and designers) is that the WordPress admin is overwhelming, there are too many options, too many ways to break things (unintentionally and intentionally). This might help a lot.

Using something like AI makes it (potentially) more accessible to a wider variety of people, as great as we make any UI – adding another column to a table is going to be a different process from system to system. The words ‘Add another column’ will not be. Obviouvsly we know AI can ‘hallucinate’ and so this is not guaranteed. More on that next.


Well, many. AI or for many contexts LLM is not magic. They appear to be but they are not, however the expectation, even if known (myself included) is such that they are. As such we might over trust it to produce the right results even if they are not. The need to check these is essential.

Auto generated fluff. And there will be LOTS. If as above we can generate things more easily then this will be for good and bad and maybe both. If we can generate an essay from a simple prompt then we will, and a LOT. SEO spam, filter content, marketing gateway pages and much more Ray-Ban style comment spam than you can shake a Midjourney generated stick at.

This will undoubtedly be overwhelming, and also mean we will question the nature of truth, if anything can be AI and ‘made up’, what is ‘real’.

People will develop AI detectors which will also be AI powered and will be wrong and right in equal measure. See how it’s affecting education already. Maybe I’ve put this blog post through ChatGPT, maybe I asked it to fix the spelling and grammar, maybe I asked to to generate the entire thing, maybe my prompt was super vague…or super detailed? All are AI generated but some are orders of magnitude different to the other. Is it any less valid or true if I just want to fix my spelling. What if I was dyslexic? What if my English was poor. There are so many nuances it’s almost impossible to say AI is bad, AI is good, AI is false. It just is. All neatly bringing me around to the first post on this blog in 2004.

Or another way of putting it.

“All of this has happened before. All of this will happen again.” – Number Six

Day 15 – Share a WordPress tip or trick

Prompt 15/20

Blog: Share a WordPress tip or trick that has made your life easier. Post your response on a WordPress website and link it in the comments.

There are probably a couple for me, the first being ‘Plucks a certain field out of each object or array in an array.

$categories = get_the_terms( get_the_ID(), 'category' );
wp_list_pluck( $categories, 'term_id' );

Just feels like a really efficient way of just getting the info we need, in the above instance we just want and array of Category IDs that we could do something with. But this could be post IDs or child pages via query args.

Another is ‘Displays translated text that has been escaped for safe use in HTML output‘ This one is best if we might be using HTML in the string

<?php esc_html_e( 'Skip to main content', 'dogwonder' ); ?>

We could also use the following depending on the context in which the text is being used.

esc_html__( 'text to translate', 'text-domain' ) // To store a translated string in a variable, can be echoed later
__( 'text to translate', 'text-domain' ) // Needs echoing, no escaping
_e( 'text to translate', 'text-domain' ) // No escaping echos directly

In general it’s probably good practice to use either esc_html_e or esc_html__

It also has the benefit of preventing cross-site scripting (XSS) attacks.

Now you may never wish to translate your theme or plugin, but it’s not a bad idea to do the above if you ever think it might happen. It will save a huge amount of time later. You can then use a tool such as Poedit so scan your theme or plugin to create an empty translation file.

Day 14 – Take a screenshot of your IDE 

Prompt 14/20

Develop: Take a screenshot of your IDE open to a recent WordPress project (be sure to obscure any identifying details) and share it on your preferred social account. Post a link to your post in the comments.

This is a recent project where I am building a category filter. Bonus feature, I’ve just got access to GitHub CoPilot X so included that in the screenshot as well.

Screenshot of my IDE (Integrated development environment) showing a recent project where I am building a categories filter list

Day 13 – What is your favorite website built in WordPress right now

Prompt 13/20

Right now. whitehouse.gov

Built at speed, I think it was put together in 6 weeks (!!), when the new Biden administration came in. For me it was one of the first examples I had seen that demonstrated the potential power of the Gutenberg editor and block based development.

I’ve always been an admirer of the agency involved 10up. They presented their approach in a WordCamp in 2021. They presented it very well and it was an excellent overview of how they created the site, with bonus example code (abstracted as the whitehouse.gov code is not open source for obvious reasons).

Day 12 – ACF

Prompt 12/20

Blog: What is your favorite plugin in the WordPress Plugins Directory? Tell us about it on your WordPress website and link to it in the comments.



We used to do all kinds of weird hacks with WordPress before ACF (Advanced Custom Fields) was released in 2012, using category archives as content hubs, tag clouds as navigation, hard-coded stuff everywhere…

Sure, there were meta box options out there and some custom database solutions, but nothing on the level of what Elliot Condon achieved with Advanced Custom Fields.

WordPress + ACF transformed what were essentially simple blogs into proper CMSs. It was released around the same time I started freelancing, which allowed me, as a fledgling business, to offer so much more as a WordPress developer.

For many years, I had been building what were essentially blogs with a few content pages for clients, but ACF opened up so many possibilities. Before that, you really needed to use something like Rails or Drupal to create ‘proper’ websites. Then came ACF.

In conjunction with custom post types and custom taxonomies, it supercharged WordPress and was incredibly easy to use. The documentation was amazing, and the support was incredible. The original pro licenses for repeater, flexible content, gallery, and options, priced at $25 (AUD), made even more things possible. It not only benefited me, but also empowered my clients to have more control over their own content without having to ask someone else to modify hard-coded values.

Since 2012, it has been the first plugin I install on every site, and I still do so to this day.

2023 2022 2021 2020 2019 2017 2016 2014 2013 2012 2011 2010 2009 2008 2007 2006 2005 2004