WordPress Developer Blog

What’s new for developers? (September 2025)

What’s new for developers? (September 2025)

Highlights

New Composer package for the Abilities API

The Composer package wordpress/abilities-api is now properly configured and available for early testing. WordPress extenders can begin experimenting with the Abilities API ahead of its official release in WordPress 6.9.

WordPress gets an Accordion block

This change introduces four new experimental blocks:

  • Accordion
  • Accordion Item
  • Accordion Header
  • Accordion Panel

This has been a long time coming, with the original issue dating back to 2020. A lot of work went into ensuring that the blocks followed the HTML semantics and practices presented by examples from WCAG and USWDS. The front-end experience is powered by the Interactivity API, making this block completely self-contained within the tools provided by WordPress core.

To try out these new blocks, be sure to have the latest version of the Gutenberg plugin installed. Then, visit Gutenberg > Experiments and check the option to “Enable experimental blocks.”

Style input elements with theme.json

As part of the effort to allow theme.json to style form elements, it’s now possible to target text based controls as well as select or dropdown elements using the styles.elements property in theme.json

You can try this out with the latest version of the Gutenberg plugin installed by enabling the Form block under the Experiments page. Add the following to your theme.json to add a red border to the text inputs and textareas.

"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)"
		}
	}
}

You can test the select/dropdown by adding either a Categories List or Archives block with the “Display as dropdown” option active and then add the following to your theme.json:

"elements": {
	"select": {
		"color": {
			"text": "red",
			"background": "blue"
		}
	}
}

Plugins and Tools

Data Views

Data Views has seen a number of updates and enhancements in the last month. Some of the more notable additions are adding infinite scroll to dataviews, adding a smaller preview size, and adding a new card layout, along with a number of smaller updates and enhancements:

  • DataForm: Panel layout can open as dropdown or modal. (71212)
  • Add enableMoving option to the table layout to allow or disallow columns moving left and right. (71120)
  • Allow hiding configuration. (71173)
  • DataForm: Add array control. (71136)
  • DataViews story: Rename “Non-interactive” to “Minimal UI”. (71178)

Create Block: Variants can define their own files

Creating templates for the @wordpress/create-block package is not new, but when those templates support a lot of variants, the associated template files can get very complicated to manage. The latest version of the package now supports variants defining their own template files to override the main ones. This will effectively remove the need to wrap file contents in complicated mustache conditional checks and make managing the templates much easier. 

You can read more about how to implement this in your templates in official documentation for variants.

Miscellaneous

AI

The Core AI team has been hard at work this month. Along with the v0.1.1 release of the Abilities API, the PHP AI Client saw its first stable release with version 0.1.0. To demonstrate both of those libraries, Felix Arntz has released an AI Chatbot demo on GitHub. To top it off, the WordPress MCP adapter now officially supports Cursor.

They are still hard at work on a client-side library for the Abilities API and are looking for help with testing.

Playground

Get your Playground Contributor badge

If you’ve contributed to the work being done on WordPress Playground, you can now request a contributor badge. Head over to the Requesting a Profile Badge page on the Playground documentation site for more information and the steps to follow. While you’re there, check out the newly updated landing page for Playground. There you can learn more about the project and try out blueprints.

Playground CLI and Query API updates

The Query API now supports installing multiple themes and plugins by repeating the theme or plugin parameter in the URL string.

http://playground.wordpress.net/?theme=acai&theme=skincare-brand

Two new flags have been added to the Playground CLI:

  • --site-url will set a custom URL for the local environment
  • --auto-mount allows users to specify the folder where the auto-mount will be applied

PHP prototyping in the browser

Adam Zieliński created a PHP Playground for developers to prototype PHP code directly in the browser. 

General Updates

XDebug Bridge, an experimental feature that allows developers to debug WordPress playground on Chrome, has received several improvements, such as highlighting the debugged code and better connection with DevTools. Have a look at the following issues to dig into the details:

PHP WASM, php.cli() is exposed for being used by PHP WASM, and has support for intl, a dynamic extension for internationalization.

Themes

Date block supports custom dates and block bindings

The Date block has seen some major upgrades. In addition to supporting custom dates, the existing variations for Post Date and Last Modified Date have been updated to use Block Bindings. To enable this change, a new binding source named core/post-data was created, which now exposes the publish date as date and the last modified date as modified for a given post.

New Query Loop Title block variation

The new Post Type Label variation allows users to display the post type of current item being shown inside a Query Loop block. This is particularly useful for displaying the post type name when building custom post type archive templates.

Early look at template duplication and active templates

There is some exploratory work being done on the concept of having a set of active templates and allowing templates to be duplicated. There is a lot of unpack in the issue but theme authors should have a look and provide feedback at this early stage.

Theme.json supports border radius presets

It’s now possible to define border radius presets in the theme.json for your theme. Test this out using the latest version of Gutenberg and adding this following to the settingsproperty of your theme.json file:

"border": {
	"radiusSizes": [
		{
			"name": "Small",
			"slug": "small",
			"size": "2px"
		},
		{
			"name": "Medium",
			"slug": "medium",
			"size": "4px"
		},
		{
			"name": "Large",
			"slug": "large",
			"size": "6px"
		}
	]
}
  • Elements: Support unitless value in CSS custom properties. (#70704)
  • Post Excerpts Block: Fix “read more” theme override. (#71179)
  • Fields Components: Add missing style resets for fieldset elements. (#71217)
  • Cover Block: Fix placeholder interaction in contentOnly mode. (#70157)

Resources and News

This month, the Developer Blog published three new articles you won’t want to miss.

First up, Justin Tadlock walks you through how to register your own social media icons—perfect prep for when this feature lands in WordPress 6.9.

The ever-prolific Troy Chaplin released not one but two in-depth articles on plugin development:

The Developer Blog is always looking for new contributors! If you’re passionate about sharing your WordPress knowledge, consider joining us. It’s a rewarding way to give back to the community.

Props to @psykro, @fellyph, @greenshady and @areziaal for contributing to and/or providing feedback on this article.

Leave a Reply