MCPforWP

What changed in WordPress

Every change an AI agent should know about, with what to do now and the source. This is what the wp_now tool returns.

Editor

Gutenberg 24.3.0 released

Adds rich text formatting across blocks and an Avatar UI component, removes the @wordpress/lazy-import package, extracts core actions into @wordpress/core-actions script modules, and grows the React 19 list of incompatible plugins.

Remove any import of @wordpress/lazy-import and test your plugin with the Gutenberg React 19 experiment.

Source, Gutenberg 24.3

Editor

7.2: text shadows, wider responsive styles, new admin icons

WordPress 7.2 adds text shadow controls with presets in theme.json, extends viewport-specific styling to more design tools and blocks, and replaces legacy Dashicons in the admin bar and sidebar with icons from the WordPress icon library.

Define text shadow presets in theme.json instead of custom CSS, and don't assume core admin menu icons are Dashicons.

Source, WP 7.2 Beta 1

Editor

7.1 deprecates experimental block helpers and legacy packages

__experimentalCloneSanitizedBlock and __experimentalSanitizeBlockAttributes now log deprecations in favor of cloneSanitizedBlock and sanitizeBlockAttributes. @wordpress/nux is a no-op package and @wordpress/reusable-blocks public APIs log deprecation warnings.

Switch to the stable cloneSanitizedBlock/sanitizeBlockAttributes, use the Guide component instead of NUX, and core entity methods for synced patterns.

Source, WP 7.1

Editor

getEntityRecords() returns all records for non-paginated entities

Core Data no longer slices non-paginated entities (like post types) to 10 records client-side; slicing only happens for entities that declare supportsPagination: true.

Drop the per_page: -1 workaround where it was only a fix for this, and declare supportsPagination: false on custom non-paginated entities.

Source, WP 7.1

Editor

The post editor is always iframed in 7.1

Starting with 7.1, the post editor is iframed regardless of theme type or block API versions, including when legacy meta boxes are registered. In 7.0 it was only iframed when every inserted block used block API version 3+.

Get the canvas document via ownerDocument/defaultView instead of global document/window, and use useRefEffect for listeners.

Source, WP 7.1

Editor

React 19 is not in WordPress 7.1

WordPress 7.1 still ships React 18.3. The React 19 upgrade was reverted and is now an opt-in experiment in the Gutenberg plugin (since 23.4). The main breakage comes from plugins bundling react/jsx-runtime and from APIs removed in React 19 (string refs, default props on function components, legacy context).

Externalize react-jsx-runtime instead of bundling it, and test with the Gutenberg React 19 experiment.

Source, WP 7.1, Gutenberg 23.4+

Editor

Components: 40px default height, Navigation component removed

@wordpress/components form controls are always 40px tall; __next40pxDefaultSize has no effect and false no longer opts out. The deprecated Navigation component and __experimentalApplyValueToSides were removed.

Stop passing __next40pxDefaultSize, and use Navigator instead of Navigation.

Source, WP 7.1

Editor

contentOnly editing now applies more broadly to patterns

In 7.0, contentOnly mode is the default for patterns that relied on unrestricted inner block editing. Opt out for unsynced patterns with the disableContentOnlyForUnsyncedPatterns setting (via block_editor_settings_all). A listView block support adds a List View tab to the inspector.

Add "role": "content" to content attributes in block.json so your blocks stay editable inside contentOnly patterns.

Source, WP 7.0

Editor

PHP-only block registration with autoRegister

Blocks can be registered entirely in PHP: call register_block_type() with 'supports' => array( 'autoRegister' => true ) and a render_callback. The editor shows the block without any JavaScript and generates inspector controls from the attributes.

For simple server-rendered blocks, use autoRegister instead of writing a JS edit component.

Source, WP 7.0

Editor

Interactivity API: watch(), state.navigation deprecated

7.0 adds watch() to @wordpress/interactivity to rerun a callback when signals change. Accessing state.navigation in the core/router store is deprecated, and state.url is now populated on the server.

Use watch() with state.url to track client-side navigations instead of reading state.navigation.

Source, WP 7.0