-

Practical automation without the hype: you probably don’t need AI yet
Most of what pays for a small business is not AI. It is well-built systems most owners never set up: a text…
-

Dynamic content in WordPress, without a custom block or a shortcode
WordPress calls it ‘binding dynamic data to block attributes.’ In plain terms: a block binding is a placeholder on a block. It…
-

Why a WordPress scheduled post won’t publish, even when cron is fine
A scheduled post that misses its slot isn’t proof that wp-cron is broken. WordPress publishes a scheduled post with exactly one disposable…
-

Most jobs come in broken, and the problem you describe is rarely the real one
The problem a business hires me for is rarely the one costing them money. A medical office thought they had a marketing…
-

Why your WordPress Query Loop renders as one column, not a grid
A Query Loop set to a grid that renders one stacked column isn’t broken. The grid control moved from the Query Loop…
-

For an icon next to a heading, reach for centering, not text-box-trim
text-box-trim, the CSS that went cross-browser this month, is the right tool for aligning text to an edge. An icon next to…
-

WordPress 7.1 lets you register icons. Then it deletes your strokes.
The 7.1 Icons API finally lets a plugin register its own SVG icons. Register a stroke-drawn set like Tabler or Feather and…
-

The “unexpected or invalid content” error is a diff, not corruption
The scariest error in the block editor is just two versions of your markup disagreeing: the one in the database and the…
-

WordPress 7.1 and theme.json’s growing source of truth
Two ordinary things always ejected me from theme.json into a stylesheet: a hover color and a mobile padding. WordPress 7.1 pulls both…
-

WordPress’s Icon block ships 88 icons and no way to add yours (until 7.1)
Core’s Icon block has exactly 88 icons and a registry you can’t touch: a protected method, a manifest with no filter. I…
