Articles

  • 2026 Theme Refresh

    Surprise! I refreshed the site! I wanted to tighten things up, the old classic tomjn.com theme had gotten clunky as consecutive years took their toll. My priorities for the site have also changed significantly. I don’t need a talks post type anymore, or an archive of projects. Similarly with the rise of AI the value…

  • Filtering Blocks When allowed_block_types_all is a boolean

    If you’re trying to filter which blocks are allowed in the WordPress block editor using allowed_block_types_all but the value is true/false it’s difficult to know what to do. I’ll cover every use case here: If It’s false This means no blocks are allowed. Note that I’ve used empty here so that it also catches empty…

  • Turning Off Reusable Blocks

    How to turn off reusable blocks i the block editor interface

  • Turning Off The Block Directory

    Disable the block directory in WordPresss with this PHP code snippet

  • Gutenberg Comments

    You might have noticed my comment section looks a little.. blocky.. After my WordCamp Europe talk in Berlin about the block list module, I decided to polish up my examples some more and deploy to production. And so I present, block comments, a prototype of block editor powered comments. https://github.com/tomjn/block-comments FAQ How Does it Work?…

  • Using HTTP2 Push With WordPress

    Taking advantage of HTTP/2 push can bring big improvements to front end performance. This pushes resources to the browser preemptively, avoiding extra requests and waiting time. I’m going to cover how to do this in WordPress. This has made big improvements to page load times, removing connections and waiting times for resources, as well as…

  • Deployment and WordPress

    There are many ways to deploy WordPress, but I’m going to cover a process that should work for most people, provides security, and makes life easier. I’ll be covering each part and how to implement it: Track the entire WordPress install with git Automatically deploy changes as they happen Use the master branch as production Automatic…

  • Leaflets at WordCamps a PSA

    Want to promote your services? Don’t litter a WordCamp with promotional flyers and leaflets. A lot of people turn up at WordCamps, such as London or Europe, hoping to gain new business contacts or customers. But they don’t talk to people, sponsor, or hand out business cards. Instead they place promotional flyers and leaflets in…

  • How Frontenberg Works

    How does Frontenberg work? I’m going to walk through what I did to build a frontend Gutenberg site, the problems encountered, and the fixes

  • Where Gutenberg Leads Us

    The new editor has the potential to be an amazing experience. While there’s a lot of kinks to be ironed out, there are some less appreciated consequences, that lead to more exciting places! I’m a strong believer that the new Gutenberg editor introduces a landmark shift in WP UX design for WordPress. Similar to the…

  • VIP-VVV

    Mourning the loss of VIP Quickstart? A fan of VVV? Then I have something for you.

  • Writing a WP REST API endpoint in 2 minutes

    I need to write a REST API endpoint, but lets assume we know nothing about REST APIs.

  • What’s New in VVV 2.0

    Varying Vagrant Vagrants ( VVV ) has undergone a small transformation for the better. This post will cover what’s changed and how to make sure your local developer environment isn’t left behind. The New Main Provisioner The fabulous Lorelei Aurora has rewritten the provisioning system for VVV, enabling a slew of new features and improved…

  • The Correct Way to Build Plugins – The Bitter Truth

    What is the correct way to build a WordPress plugin, the official, recommended way that was always intended? The idealised standard? The Problem Plugins are not discrete modules in the WordPress world. Their isolation exists only on the filesystem, but once that code is loaded into memory it shares the same space as Core itself.…

  • Return Data not HTML

    Functions and methods should return data structures, not rendered HTML. Returning HTML encourages early escaping, HTML parsing, and mixed data processing and output. These are all security and performance issues. What Could Go Wrong? Assembling and handling strings of HTML complicates things as you’re no longer dealing directly with the data, but a particular form…

  • Vagrant Provision Timeouts

    Have you ever encountered this error? Timed out while waiting for the machine to boot. This means that Vagrant was unable to communicate with the guest machine within the configured ("config.vm.boot_timeout" value) time period. If you look above, you should be able to see the error(s) that Vagrant had when attempting to connect to the…

  • WordCamp Food

    Lunch can be stressful for any WordCamp organiser, but there’s a major issue that’s trivially easy to fix that’s gone unnoticed. What’s for lunch? Different people have allergies and dietary requirements, but lunch can be a stressful and anxious situation for all attendees. For example, lunch at the first WordCamp Europe was a mound of unlabelled…