I constructed 4 block plugins final week. It was not one thing I had got down to do. I didn’t get up in the future and declare, “I think I will build a suite of custom block types over the next few days.” It simply occurred.
The first plugin I constructed was to deal with an outdated ticket for Gutenberg that had not seen any traction. Perhaps others weren’t in the thought, or it by no means crossed their path in the ocean of 1,000s of different tickets. Why not simply construct it myself? So, I did. It took a couple of hours, however a lot of that point was re-configuring the @wordpress/scripts
construct script to my liking and studying docs.
With that plugin out of the best way, I began in search of new issues to unravel. One that was already on my radar was the lacking Comments Title block essential to carry the upcoming Comments Query Loop block to function parity earlier than WordPress 6.0 lands. So, I constructed a tough plugin for it.
Fortunately, others took that preliminary concept and ran with it, constructing one thing much more versatile than my first try. Now, there may be a new block in Gutenberg.
I had a couple of different itches I needed to scratch, and there was little to do on a rain-filled Sunday. Namely, WordPress doesn’t embody equal blocks for the wp_list_users()
and wp_list_authors()
template tags. That appeared like an oversight, so I tackled early variations of these.
I’ll put these up without cost on the official WordPress plugin listing quickly for folk in them. I can solely hope they’ll assist another person in the longer term.
This publish is about sharing my expertise, the journey, quite than what turned of all of it.
Recently, somebody requested whether or not I may function in this JavaScript-heavy world of blocks as a developer. It has been over two years since I took on a writing place right here at WP Tavern and developed real-world options for customers. I used to be solely beginning to use JavaScript with the block editor again then.
Since then, I’ve dabbled with block themes, even releasing one on WordPress.org. I’ve constructed a few PHP-based tasks for enjoyable in my spare time. I even created my first customized block plugin final summer season and shared my expertise with readers. Shortly after, I constructed a second.
That burning flame I had almost a yr in the past rapidly died down. That had extra to do with the state of block theme growth, which was nonetheless in its infancy, than something. I used to be enthusiastic about its potential, however constant breakage was greater than I had time to cope with, contemplating all of it was a enjoyable facet undertaking.
At coronary heart, I’m nonetheless a programmer, a downside solver. So, I started anew.
The first cease was the JavaScript Build Setup documentation for constructing blocks. I used to be going to be taught the “WordPress way” this time round. For essentially the most half, I adopted by way of with that.
The solely hiccup I had was the setup script snake-casing my namespace, x3p0
, into x_3_p_0
in perform names. That was a mess to wash up. However, I didn’t must undergo that course of in different block plugins. I simply needed the newbie expertise on the primary go.
For constructing blocks, @wordpress/scripts
is all that’s vital. I tinkered with it, added a couple of customized instructions, and modified the enter/output folders. However, it has the whole lot wanted to rise up and working quick.
I skipped previous the Hola, mundo! (Hello, world!) portion of the setup tutorial. Whenever I got down to construct something, I plan to dive headfirst into one thing a bit extra advanced. However, it by no means hurts to get the fundamentals all the way down to see how issues work.
My type of programming is one constructed upon failure. I enterprise out with an concept, fail miserably, and proceed studying from my errors. A short time later, I had a customized block sort that confirmed a hyperlink again to a nested remark’s guardian:

While that was a success, I’ve realized that another built-in editor elements may make it even higher.
That first block gave me a style of contemporary growth on WordPress. It was a comparatively easy plugin to construct, nevertheless it was straightforward to see how one may broaden it out to extra advanced options.
The elements system has grown into a sturdy and versatile toolset for builders over these previous couple of years. Plus, the component-level documentation is well-rounded at this level, particularly when pairing it with utilization in the core code.
As I continued constructing new blocks, I began taking up extra advanced ideas. One of the issues I wanted to be taught was find out how to work together with the core information layer. As I stepped into my third and fourth block sorts, I wanted to question customers and checklist them:
While there may be a “basics” tutorial on working with core information, the reference information was spotty in locations. Some items even appeared to be lacking altogether. Where had been the superior guides? I couldn’t discover any, and “doing stuff” with information is the meat of plugin growth once you get past a few easy type fields.
I spent a while with the tried and true console.log()
to determine issues and perused the core code. Eventually, I pushed by way of and constructed a couple of working tasks.
Did my expertise enhance this time round in comparison with a yr in the past? Without a doubt, it did.
More than something, I need to thank all of the contributors to the Gutenberg undertaking. The construct instruments and vary of pre-built elements are welcome for this developer who has spent most of his time in the PHP world. I at all times get pleasure from having the ability to decide up a toolset and begin constructing with it instantly. I’m positive I’ve solely glimpsed some of what’s potential at this level, however I stay up for making an attempt new issues. As I develop extra snug, perhaps I’ll write a few of these superior tutorials that I imagine are lacking.