WordPress Developer Ukraine, Kyiv
Conventional Commits and git-cliff: Automated WordPress Plugin Changelogs

Conventional Commits and git-cliff: Automated WordPress Plugin Changelog ...

Conventional Commits and git-cliff: a plugin changelog from the commit history The changelog in readme.txt is written at release time, from memory, and it shows: fixes are forgotten, internal refactorings are listed as features. If the commit messages follow a simple convention, a tool can sort them into “Features”, “Fixes” and “Breaking changes” and write…
Building Custom WP-CLI Commands for Plugin Operations

Building Custom WP-CLI Commands for Plugin Operations

Custom WP-CLI commands for a plugin’s maintenance tasks Every plugin with real data sooner or later needs tasks that do not belong in the admin: re-sync 20,000 products with an API, rebuild a lookup table, clean up after a failed import. A shell script that chains wp eval calls is fragile. A WP-CLI command of…
PHP 8.3 Features for WordPress Plugin Development

PHP 8.3 Features for WordPress Plugin Development

PHP 8.3 for WordPress plugin developers PHP 8.3 (November 2023) is a release of small, practical changes: typed class constants, an #[\Override] attribute, json_validate(), dynamic access to class constants and a few deprecations. In mid-2025 it is the version many hosts recommend, so plugins can start to require it, or at least must run on…
Git Tags and Signed Releases for WordPress Plugins

Git Tags and Signed Releases for WordPress Plugins

Git tags and signed releases for a WordPress plugin A plugin release is a version number in three places (the plugin header, readme.txt‘s “Stable tag”, a constant in the code), a ZIP and, ideally, a tag in git that marks exactly which commit was released. When these drift apart, a support request for “version 2.4.1”…
Git Monorepo Strategy for WordPress Plugin Development

Git Monorepo Strategy for WordPress Plugin Development

A monorepo for several WordPress plugins An agency with five plugins and a shared library usually has six repositories. A change in the library means a release of the library, then a Composer update and a pull request in every plugin, and the integration tests run only after all of that. A monorepo puts all…
WordPress Interactivity API: Reactive Blocks Without React

WordPress Interactivity API: Reactive Blocks Without React

The WordPress Interactivity API: interactive blocks without React on the front end Blocks are built with React in the editor, but on the front end they are static HTML. For an accordion, a tab group or a “show more” button, every block author used to write their own vanilla JavaScript or ship a framework. Since…
Query Monitor: Diagnosing Slow Queries and Hooks in WordPress

Query Monitor: Diagnosing Slow Queries and Hooks in WordPress

Query Monitor: find what makes a WordPress page slow A slow page has a cause somewhere between the database, PHP code, hooks and external HTTP requests. Query Monitor is a free debugging plugin that shows all of this for the current request in a panel under the admin bar: every database query with its time…