Using for a plugin on

Did you know that a plugin hosted on the Plugin Directory can use a markdown file instead of readme.txt? If you manage your plugin on GitHub or GitLab and use a file there’s no need to maintain or generate a separate readme.txt file — just send the file straight to

Continue reading “Using for a plugin on”

WordPress Hook Autocompletion for VS Code

I’ve published a VS Code extension which autocompletes WordPress action and filter names and the corresponding callback function. Check out the extension here on the VS Code Marketplace.

It’s new and this is my first VS Code extension so it needs some more work. I’ll be improving it over time but I hope you find it useful!

The Unprofessional Web

You may have heard some news over the last few days about obfuscated and malicious code allegedly being found within a WordPress plugin published by a theme shop called pipdig. Jem Turner covered it here and Wordfence Security covered it here, although the latter chose to only use the word “peculiar” as I suspect they’ve drawn the same conclusion that I have.

Continue reading “The Unprofessional Web”

Brief Thoughts on a Ten Year Old WordPress Plugin

Today my User Switching plugin for WordPress turns ten years old.

Its active user base passed 100,000 last year which I think classifies it as moderately popular. For a plugin that’s primarily developer-oriented that’s a good number.

Continue reading “Brief Thoughts on a Ten Year Old WordPress Plugin”

My Code Extensions

Last updated: January 2020

I’ve previously written about my Sublime Text packages, but I’ve since switched to the excellent VS Code editor.

If you’ve already disregarded this editor based on the Visual Studio prefix in its name, please don’t. There really is no relation to Visual Studio, and I suspect that the marketing team at Microsoft were entirely responsible for the naming prefix.

Continue reading “My Code Extensions”

Rendering Dynamic Gutenberg Blocks in Theme Template Parts

Gutenberg is an ambitious project that aims to completely overhaul the experience of writing content in WordPress.

One of the problems you’ll soon run into when building a block for Gutenberg is that as a block becomes more complex, storing its complete output statically becomes undesirable. If a block contains several fields or its output contains HTML markup, you don’t want to find yourself in a situation where this output needs to be changed at some point in the future and you need to retrospectively apply changes to stored block output in every post.

Gutenberg supports dynamic block rendering so that you can perform more complex output rendering on the fly, without having to store the complete output when the block is saved. This is the same method that shortcodes in WordPress use and allows you to move away from static block output. If you’re building a block for Gutenberg that uses anything more than very simple output, you should consider using dynamic rendering.

Continue reading “Rendering Dynamic Gutenberg Blocks in Theme Template Parts”

Reducing Travis CI Build Times for WordPress Projects

Recently I’ve been working to reduce the Travis CI build times of not only WordPress core, but also the WordPress plugins and projects that I maintain.

The following patterns and tips will help you speed up your build times. Comments welcome!

Continue reading “Reducing Travis CI Build Times for WordPress Projects”