A client hit me up last week. Their marketing team was wrestling with an existing page, trying to add a few accordions and custom-styled form fields without breaking anything. The current setup was a mess of custom JS and inline styles left over from an older theme. My first thought was that this used to be a real headache to build properly, especially if you needed it accessible. The good news is that WordPress core, and the September 2025 updates in particular, makes this kind of work genuinely straightforward now.
If you’ve been deep in custom block development, or just trying to keep up with where WordPress is going, these updates are worth your time. They aren’t flashy; they’re practical tools that make the work easier and client sites sturdier. The changes land in core functionality that cuts down on custom code and makes sites easier to maintain.
What changed for WordPress block development
The official “What’s new for developers?” September 2025 report on the WordPress Developer Blog covers the new Accordion block, and it has been a long time coming. Most of us have built our own accordion components more than once, usually fighting accessibility standards like WCAG and USWDS or stitching things together with conflicting JavaScript. WordPress now ships native Accordion, Accordion Item, Header, and Panel blocks, all powered by the Interactivity API. That means less custom code and better semantics by default. Rolling your own accessible accordion from scratch is no fun, so having this in core is a real help.
Styling got easier too. Remember fighting with global CSS overrides just to style basic form elements? It was messy. Thanks to the ongoing work to let theme.json style form elements, you can now target text inputs, textareas, and even select and dropdown elements directly. That is a big deal for keeping a consistent design system. You can centralize your form styling right in your theme’s theme.json, which keeps it predictable and easy to manage without piling on extra CSS that conflicts everywhere. For example, to style text inputs:
"elements": {
"textInput": {
"border": {
"radius": "0",
"style": "solid",
"width": "1px",
"color": "red"
},
"color": {
"text": "var(--wp--preset--color--theme-2)"
},
"typography": {
"fontFamily": "var(--wp--preset--font-family--inter)"
}
}
}
That kind of control straight from theme.json removes a lot of boilerplate and applies your styles everywhere. It is what block themes needed, and it is finally here.
There’s also a change to block tooling: the @wordpress/create-block package now lets block variants define their own template files. If you’ve ever built complex blocks with many variations, you know the pain of cramming conditional logic into a single template. This makes those templates much easier to manage. It’s a small change, but it pays off in the maintainability of your custom blocks over time.
On the foundational side, the Abilities API is getting a Composer package, and the PHP AI Client had its first stable release. If you work with advanced permissions or are starting to experiment with AI in WordPress, this is the groundwork. It gives you a more structured, official way to extend core functionality instead of leaning on custom code that tends to break with every major update.
So, what’s the point?
WordPress core development is moving fast, and in a good direction. These aren’t minor tweaks; they’re foundational changes that let you build better sites with less effort. Using these core features means fewer custom hacks, less technical debt, and more time spent on the work your clients actually care about.
This stuff gets complicated fast. If you’re tired of debugging someone else’s mess and just want your site to work, drop my team a line. We’ve probably seen it before.