Junaid Bhura a web developer in Melbourne, Australia - specializing in WordPress development.

Latest Updates:


WordPress Plugin authors: Please use the platform’s patterns

An appeal to WordPress plugin authors to use platform patterns and avoid passing on their complexity on to their consumers.

Continue reading »

I contributed to WordPress 6.5

I contributed to adding the lastmod tag to sitemaps on WordPress!

Continue reading »

What we really need is a CDN that deploys to ALL edge nodes

If you are a CDN provider reading this, and want to blow the competition out of the water, please give us this functionality

Continue reading »

Performant HTML manipulation in WordPress 6.2

WordPress 6.2 quietly shipped with an update that will have a significant impact on our ability to work with markup: The WP_HTML_Tag_Processor class!

Continue reading »

How to build a standards-inspired Web Component

Let’s explore how to build a web component that is true to its web standards roots.

Continue reading »

Exceptions in WordPress: About time?

Is it about time the ability to create Exceptions became available in WordPress core? If so, what could it look like?

Continue reading »

“Hello World” Challenge – PHP

How many characters does your programming language need to output the phrase “Hello, World” on a web page? I’ll go first with PHP: 12

Continue reading »

Mastodon (and the Fediverse) will take a long time to catch on as long as Twitter exists

It really looks like Mastodon will take a long time to catch on as long as Twitter exists. Here’s why I think so.

Continue reading »

ActivityPub: This ain’t it, Chief

Elon Musk’s purchase of Twitter makes no difference to me, but I’m extremely stoked about its unintended side-effect: People considering alternate platforms, and better yet, their own websites to share their thoughts. The W3C’s official protocol for “federated” social media is called ActivityPub. With the W3C’s blessing, it is now an official web protocol, which […]

Continue reading »

When did Safari become the new Internet Explorer?

Safari turned 20 years old yesterday. It went from being a cutting-edge browser to holding back several web standards today.

Continue reading »

Turn off WordPress 6 block layout classes and styles

I actually can’t believe this feature was shipped in WordPress core. To be fair, it is marked as “experimental”. But I’ve encountered problems on a couple of sites already.

Continue reading »

I contributed to WordPress 5.9!

This was my second contribution to WordPress core. Well, technically my ticket was 5 years old but better late than never!

Continue reading »

Why custom Gutenberg blocks belong in themes, not plugins

Let me start off by prefacing that this blog post is specifically about custom blocks developed for completely custom designed websites. Not blocks built for general-purpose, third-party or off-the-shelf use, which obviously belong in plugins, since they can be distributed and consumed as such. This post is aimed at developers who build custom block-based WordPress […]

Continue reading »

PHP Web Components for WordPress

Update: See the concepts in this article used in a project structure: https://github.com/junaidbhura/wp-project-base The state of web components Modern front-end web development encourages breaking up of designs into reusable, repeatable and unique components. A component is a piece of markup capable of holding – but is separate from – content within it. The Web Components […]

Continue reading »

I contributed to WordPress 5.6!

I was one of the contributors for the WordPress 5.6 release. This was the first core release I was part of. I now get a shiny “Core Contributor” badge on my WordPress profile! Special thanks to Peter Wilson for taking a look at my ticket!

Continue reading »

How to extend blocks in the Gutenberg editor on WordPress

Important: This post assumes that you already know how to work with JavaScript ES6 and have some experience in working with and setting up custom blocks on WordPress using Webpack. Gutenberg Blocks With the introduction of WordPress 5, we now have a new powerful tool at our disposal: Blocks. Blocks let us build custom experiences […]

Continue reading »

Using Composer to manage WordPress dependencies

Package managers help managing dependencies in a project, and have become indispensable tools in modern web development. Mature languages have their own package managers, and PHP is no exception with Composer. Developers complain about how WordPress lags behind in this regard – with a lack of an official way of working with Composer. But what […]

Continue reading »

WordPress + Cloudinary = Dynamic, optimized, on-the-fly images!

Bringing Cloudinary to WordPress People have tried to bring Cloudinary to WordPress, and have really complicated the whole thing. The official Cloudinary plugin, in my opinion, is really clunky and in the way in most cases. Other solutions follow the same route, and are just too complicated. Since I wasn’t able to find a good […]

Continue reading »

I presented at a WordPress Meetup in Adelaide

I gave a presentation at WordPress Adelaide today about custom permalinks in WordPress: https://www.meetup.com/en-AU/WordPress-Adelaide/events/hfllbnywlblb/ This was my first big presentation in Australia, so big thanks to Alex and the other organisers – and Frame Creative for letting us use your space!

Continue reading »

WordPress Admin: How to Fix the “Fatal Error: Allowed Memory Size…” Error

The Problem If you’ve been working on a complex WordPress site with a lot of custom fields, perhaps with the Advanced Custom Fields (ACF) plugin – chances are you’ve come across this error when you try to access your post type in the WordPress admin: “Fatal error: Allowed memory size of xxx bytes exhausted (tried […]

Continue reading »

WordPress: How to create image sizes dynamically on the fly

WordPress is awesome. But like any system, it’s not great at everything. One of those things is media image size management, where it just doesn’t work well. The Problems: WordPress uses something called “Thumbnail Image Sizes” to maintain different versions of your images in different image sizes. You define these image sizes under Settings -> […]

Continue reading »