WordPress 7.0 just landed, and it is more than a fresh coat of paint on the dashboard. It changes how we handle AI and how we register blocks. I have spent 14+ years wrestling with core updates, and this one feels different. It is the kind of release that pushes you to update your stack or keep shipping legacy code by default. The WordPress 7.0 features lean toward making life easier for back-end devs while giving agencies more to work with on AI.
The AI client: one interface for any provider
For a long time, if a client wanted an AI feature, we had to hard-code API calls to OpenAI or Anthropic. WordPress 7.0 features fix this with the WP_AI_Client, a central interface that lets plugins talk to generative models without caring which provider is behind them. You manage your keys in Settings > Connectors, and Core handles the routing.
What I love about this is the using_model_preference() function. It lets you list models in order of preference, so if a high-end model is unavailable or too expensive for a task, the code falls back to the next one. This is how we should have been building AI features from the start.
PHP-only block registration without a build step
Setting up a full Node.js build pipeline and wrestling with Webpack just to register a simple server-rendered block was always a bottleneck. One of the more practical WordPress 7.0 features is autoRegister. You can now define a block’s metadata directly in PHP, and Gutenberg generates the sidebar controls for you.
<?php
/**
* Registering a simple PHP-only notice block.
* No JS, no build step. Just ship it.
*/
add_action( 'init', function() {
register_block_type( 'bbioon/notice-block', array(
'title' => __( 'Simple Notice', 'bbioon' ),
'render_callback' => 'bbioon_render_notice',
'attributes' => array(
'message' => array(
'type' => 'string',
'default' => 'Critical update required.',
),
'severity' => array(
'type' => 'string',
'enum' => array( 'info', 'warning', 'error' ),
'default' => 'info',
),
),
'supports' => array(
'autoRegister' => true,
),
) );
} );
function bbioon_render_notice( $attributes ) {
return sprintf(
'<div class="notice-%s">%s</div>',
esc_attr( $attributes['severity'] ),
esc_html( $attributes['message'] )
);
}
?>
I wrote up some earlier thoughts on navigating AI APIs during the beta phases, if you want to see how far this has come. The PHP-only approach helps a lot with maintenance and legacy projects.
Interactivity API and the watch() signal
The Interactivity API gets a useful refinement with the watch() function, which subscribes to changes in any signal accessed inside a callback. It suits complex UI states where you need to react to data changes without wiring up listeners by hand, and it clears up many of the race conditions we used to hack around with transients or messy JS events.
// Using the new watch() in your store
import { store, watch } from '@wordpress/interactivity';
store( 'bbioon/search', {
state: {
query: '',
},
actions: {
init: ({ state }) => {
watch( () => {
console.log( `Searching for: ${state.query}` );
// Trigger your search logic here whenever state.query changes
});
},
},
});
Infrastructure: the PHP 7.4 floor
The minimum PHP version is now 7.4. If you are still on 7.2 or 7.3, this update will break your site before it even finishes downloading, so audit your server environment now. The bump lets Core use better type hinting and cleaner syntax, which trims some of the legacy hacks in the codebase.
There are also quieter updates under the hood. Backbone.js is now at 1.6.1, and PHPMailer hit 7.0.2. These are the kinds of WordPress 7.0 features that don’t get the marketing glory but keep your site from getting hacked on a Tuesday morning.
If these WordPress 7.0 changes are eating up your dev hours, I can take it off your plate. I’ve been wrestling with WordPress since the 4.x days.
The bottom line on 7.0
WordPress 7.0 is really aimed at people building systems, not just single sites. It gives you the tools to build “agentic” features without leaning on proprietary stacks. The Breadcrumbs Block and the new Modern dashboard theme are nice, but the extensibility of the new APIs is where most of the value sits. For more on the roadmap, see the official 7.0 Field Guide on Trac.