Gutenberg 22.2 puts button hover states in theme.json
Gutenberg 22.2 lets you define button hover and focus states in theme.json instead of a separate stylesheet, and it accepts YouTube or Vimeo embeds as Cover block backgrounds.
Gutenberg 22.2 lets you define button hover and focus states in theme.json instead of a separate stylesheet, and it accepts YouTube or Vimeo embeds as Cover block backgrounds.
Notes from a slow 80k-post news portal and what WordPress 6.9 changes about it: consistent cache keys for query groups, the new block processor and HTML API, and the Abilities API.
A wrapper around a few REST endpoints wasn’t enough to keep an AI agent alive through a timeout. Version 0.3.0 of the WordPress MCP Adapter covers what I had to hand-roll: HttpTransport, WP_Error responses, prefixed hooks and one event stream.
A client’s plugin kept bouncing back out of the queue, so here is what changed: 60,187 plugins in the directory, 7,670 submissions this year, and 85.3% of first reviews started by an automated scanner rather than a person.
A banned member was back in ten minutes on three new accounts, because a dynamic IP beats a firewall rule. What the site actually needed was an incident response protocol: logging, permissions, and a human who owns the ban button.
A client shipped a custom plugin to the WordPress repo and got twenty-four violations back. Most of them came down to one habit: escaping data at the moment you output it instead of trusting the sanitization you did on input.
A regex that injected attributes into product images broke a store’s layout over one misplaced quote. WordPress 6.9 makes serialize_token() public, so the processor rebuilds the markup for you.
Twelve editors on one set of long-form guides, with feedback spread across Slack, email and sticky notes. Block-level notes and the hide and show toggle in 6.9 move that conversation into the editor.
A client’s WordPress.com site outgrew the managed plan after nearly a decade. The XML export timed out and broke thousands of image links, so the move became a SQL migration with a media path filter.
Fifty layers of function_exists() held a membership site together until the LMS renamed its methods. The Abilities API in 6.9 gives plugins a registry to declare what they can do instead.