Media Editor Modal: call for testing

The addition of a free-form image cropper in the BlockBlock Block is the abstract term used to describe units of markup that, composed together, form the content or layout of a webpage using the WordPress editor. The idea combines concepts of what in the past may have achieved with shortcodes, custom HTML, and embed discovery into a single consistent API and user experience. Editor has been a long-standing feature request. A GutenbergGutenberg The Gutenberg project is the new Editor Interface for WordPress. The editor improves the process and experience of creating new content, making writing rich content much simpler. It uses โ€˜blocksโ€™ to add richness rather than shortcodes, custom HTML etc. https://wordpress.org/gutenberg/ experiment that integrates this and other image editing features in a โ€œMedia Editor Modalโ€ is ready for testing and feedback.

What is it?

The Media Editor Modal replaces the existing inline cropping tool in the Block Editor. The modal pattern keeps the familiar Crop button entry point, and brings freeform and aspect-ratio cropping, flip, fine-grained and snap rotation, and metadata editing into one dedicated workflow.

Under the hood, the modal consumes a coreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. collection custom tools and components that will eventually live in a WordPress package. This will remove the reliance on third-party cropping libraries.

Why the change?

Image cropping in the Block Editor hasnโ€™t changed much since its introduction. The existing inline image cropper is built on top of the react-easy-crop library. This implementation has a couple of constraints:

  • itโ€™s limited by whatโ€™s achievable in the editor canvas and block toolbar, and
  • the library itself has a narrow set of features.

Why build our own library? Well-maintained, open sourceOpen Source Open Source denotes software for which the original source code is made freely available and may be redistributed and modified. Open Source **must be** delivered via a licensing model, see GPL. alternatives that do most of what users expect are few and far between. Furthermore, thereโ€™s a general preference for a WordPress-native surface that:

  • has all the features we want โ€œout of the boxโ€ such as aspect ratios, freeform cropping handles, intuitive zooming, flip and rotation,
  • includes all the usability features weโ€™d expect such as touch and keyboard support, and
  • is extensibleExtensible This is the ability to add additional functionality to the code. Plugins extend the WordPress core software. in ways idiomatic to the WordPress ecosystem.

There was an attempt to build a custom, editor-first cropper component, but it was abandoned. Rather than developing separate, one-off flows across blocks, the Media Editor Modal aims to provide a consistent foundation for both a new Media Library experience and various editor contexts, and also serve as platform for building more sophisticated experiences later.

How to test

If youโ€™re familiar with the Gutenberg plugin development environment, you can check out trunktrunk A directory in Subversion containing the latest development code in preparation for the next major release cycle. If you are running "trunk", then you are on the latest revision. right now and enable the Media Modal experiment from the experiments page at /wp-admin/admin.php?page=experiments-wp-admin

Update: #78653 merged, which makes the modal the default experience. No requirement to enable any experiment.

The quickest way to test is via Playground. Hereโ€™s a link that loads up Playground with Gutenberg Trunk and the Media Editor Modal active:

Suggested testing flows

The steps are provided just in case you need structure. Donโ€™t feel any need to follow any or all of them.

The important question is whether the modal is solid enough as a replacement for the Image block crop flow, and whether you notice any bugs, UXUX User experience gaps or unexpected behaviors.

Basic crop flow

  1. Open the modal from an Image block.
  2. Resize the crop area.
  3. Pan and zoom the image.
  4. Rotate or flip the image.
  5. Save.
  6. Confirm the block updates to use the edited image.

Details editing

  1. In a saved post with a title, upload or insert an image.
  2. Open the modal from the Image block.
  3. Switch to the Details tab.
  4. Confirm Author and Attached to fields are populated with your author handle and the current postโ€™s title.
  5. Update alt text and caption.
  6. Save.
  7. Confirm the media item updates.
  8. Confirm the Image block updates when its existing alt/caption values were empty or matched the original media values.

Existing custom block values

  1. Add an Image block.
  2. Manually enter custom alt text or a custom caption in the block.
  3. Open the media editor modal.
  4. Change the attachmentโ€™s alt text or caption.
  5. Save.
  6. Confirm custom block-level values are not unexpectedly overwritten.

Keyboard

  1. Open the modal.
  2. Use Tab to move through the crop area, crop handles, toolbar controls, sidebarSidebar A sidebar in WordPress is referred to a widget-ready area used by WordPress themes to display information that is not a part of the main content. It is not always a vertical column on the side. It can be a horizontal rectangle below or above the content area, footer, header, or any where in the theme. controls, Save, Cancel, and Close.
  3. Use arrow keys to move or resize the crop area.
  4. Confirm focus is visible and does not get lost.
  5. Try undo/redo with keyboard shortcuts.
  6. Confirm Escape behaves as expected when there are unsaved changes.

Touch gestures

  1. On a touch device, open the modal from an Image block.
  2. Test drag panning, pinch zoom, and crop area handle dragging for responsiveness and smoothness.
  3. Ensure toolbar actions like rotate, flip, undo, redo, and reset are tappable.

Sharing your feedback

Comments on this post are a great way to share feedback, but if youโ€™d like to jump into Gutenberg feel free to leave feedback on this tracking issue as itโ€™s the main one covering current tasks for the experimental modal. Weโ€™d love to know for example:

  • Did the modal open where you expected it to?
  • Was cropping understandable without extra instruction?
  • Did anything feel slower, confusing, or broken?
  • Did the image tools, including Save and Cancel behave as youโ€™d expect?

Out of scope

The goal is to make the basic crop/edit workflow solid first, not to ship every image editing feature. Some related work is still being explored separately, for example:

  • Manual pixel crop controls.
  • Restoring original image.
  • Improving undo/redo history states.
  • Broader image editor extensibility for image filterFilter Filters are one of the two types of Hooks https://codex.wordpress.org/Plugin_API/Hooks. They provide a way for functions to modify data of other functions. They are the counterpart to Actions. Unlike Actions, filters are meant to work in an isolated manner, and should never have side effects such as affecting global variables and output. and/or AI integration options.

Thank you for making it this far, and thanks in advance for testing.

Props to @andrewserong and @isabel_brison for helping to write this post.

#core-editor, #gutenberg, #media, #media-modal

What’s new in Gutenberg 23.2? (21 May)

โ€œWhatโ€™s new in GutenbergGutenberg The Gutenberg project is the new Editor Interface for WordPress. The editor improves the process and experience of creating new content, making writing rich content much simpler. It uses โ€˜blocksโ€™ to add richness rather than shortcodes, custom HTML etc. https://wordpress.org/gutenberg/โ€ฆโ€ posts (labeled with the #gutenberg-new tag) are posted following every Gutenberg release on a biweekly basis, showcasing new features included in each release. As a reminder, hereโ€™s an overview of different ways to keep up with Gutenberg and the Editor.

Whatโ€™s New In
Gutenberg 23.2?

Gutenberg 23.2 has been released and is available for download!

This release introduces responsive global blockBlock Block is the abstract term used to describe units of markup that, composed together, form the content or layout of a webpage using the WordPress editor. The idea combines concepts of what in the past may have achieved with shortcodes, custom HTML, and embed discovery into a single consistent API and user experience. styles with states, brings further improvements to the experimental Content Types management screens, and adds a wave of accessibilityAccessibility Accessibility (commonly shortened to a11y) refers to the design of products, devices, services, or environments for people with disabilities. The concept of accessible design ensures both โ€œdirect accessโ€ (i.e. unassisted) and โ€œindirect accessโ€ meaning compatibility with a personโ€™s assistive technology (for example, computer screen readers). (https://en.wikipedia.org/wiki/Accessibility) refinements to the RevisionsRevisions The WordPress revisions system stores a record of each saved draft or published update. The revision system allows you to see what changes were made in each revision by dragging a slider (or using the Next/Previous buttons). The display indicates what has changed in each revision. interface. The @wordpress/ui package gains a new SelectControl and motion design tokens, while modals now render as bottom sheets on mobile. Other changes include shortcodeShortcode A shortcode is a placeholder used within a WordPress post, page, or widget to insert a form or function generated by a plugin in a specific location on your site.-to-block transforms, Grid component enhancements, Connectors refinements, and continued Real-time Collaboration reliability fixes.

Table of contents

  1. Responsive global block styles with states
  2. Add motion design tokens (duration and easing) to @wordpress/theme
  3. Modal renders as a bottom sheet on mobile
  4. Other Notable Highlights
  5. Changelog
    1. Features
    2. Enhancements
    3. Bug Fixes
    4. Experiments
    5. Documentation
    6. Code Quality
    7. Tools
    8. Various
  6. First-time contributors
  7. Contributors

Responsive global block styles with states

You can now customize how individual blocks look on different screen sizes, right from Global Styles.

Head to Global Styles โ†’ Blocks, and youโ€™ll find a new States dropdown on each block with Tablet and Mobile options. Select a state, make your style changes, and theyโ€™ll apply only to that breakpoint.

This allows theme developers and site builders to define different block styles depending on viewport size and interaction state, paving the way for more adaptive designs managed entirely through the editor. (#77513)

Add motion design tokens (duration and easing) to wordpress/theme

Adds motion design tokens toย @wordpress/themeย โ€” a set ofย durationย andย easing curveย tokens for standardizing animation timing across components โ€” and adopts them inย Dialog,ย Modal, andย Menu/DropdownMenu.

The Modal component now adapts to narrow viewports by rendering as a bottom sheet, providing a more touch-friendly experience on phones and small tablets. (#77956)

With the new position, important actions are easier to reach with one hand.

Other Notable Highlights

  • Content Types management improvements (experimental): The experimental Content Types screens are extended with several refinements: taxonomyTaxonomy A taxonomy is a way to group things together. In WordPress, some common taxonomies are category, link, tag, or post format. https://codex.wordpress.org/Taxonomies#Default_Taxonomies. visibility fields let you control where taxonomies appear (#77835), slugs are now auto-filled from the singular label (#77938), and new term/post type count fields provide an at-a-glance view of content usage (#78157). Additional quality-of-life actionsโ€”duplicate, view, and quick-editโ€”round out the management experience.
  • SelectControl added to @wordpress/ui. A new SelectControl primitive joins the design-system package, offering a consistent select input across the editor and adminadmin (and super admin) surfaces. (#77809)
  • Shortcode-to-block transforms. The Embed block now recognizes [ embed ] shortcodes (#77937), and the Shortcode block offers block-specific transforms when the text matches a registered shortcode (#77944).
  • Grid component improvements. The @wordpress/grid package gains a renderResizeHandle render prop (#77811), an edit-mode overlay for DashboardGrid and DashboardLanes (#78199), document cursor lock during resize (#77813), and resize-runaway prevention near the viewport edge (#77854).
  • Revisions accessibility improvements. Diff markers now enforce a 24ร—24 px minimum target size per WCAGWCAG WCAG is an acronym for Web Content Accessibility Guidelines. These guidelines are helping make sure the internet is accessible to all people no matter how they would need to access the internet (screen-reader, keyboard only, etc) https://www.w3.org/TR/WCAG21/. 2.5.8 (#77671), use diagonal stripe patterns to avoid color-only distinction (#77904), and display tooltips (#77690). The revisions slider now paginates by 100 per page for better performance (#77200).
  • Real-time Collaboration reliability fixes. Title divergence between users on page refresh has been resolved (#77666), a race condition on room creation that could split the update log is fixed (#77675), and find_canonical_storage_post_id() no longer returns null incorrectly (#78053).
  • Connectors refinements. PluginPlugin A plugin is a piece of software containing a group of functions that can be added to a WordPress website. They can extend functionality or add new features to your WordPress websites. WordPress plugins are written in the PHP programming language and integrate seamlessly with WordPress. These can be free in the WordPress.org Plugin Directory https://wordpress.org/plugins/ or can be cost-based plugin from a third-party. registration now supports an is_active callback (#77897), settings are only auto-registered when the referenced plugin is actually installed and active (#77273), and the Connectors page works on read-only file systems (#77521).

Changelog

Features

Block Editor

  • Try responsive global block styles with states. (77513)
  • Enhance the Connectors page on the read-only file system. (77521)

Enhancements

Components

  • Add SelectControl component to wordpress/ui. (77809)
  • Add motion design tokens (duration and easing) to wordpress/theme. (76097)
  • Button: Align link variant underline with Link and ExternalLink. (77842)
  • Grid: Add renderResizeHandle render prop. (77811)
  • Grid: Add edit-mode overlay to DashboardGrid and DashboardLanes. (78199)
  • Grid: Lock document cursor during resize gesture. (77813)
  • Grid: Prevent resize runaway near viewport edge. (77854)
  • Modal: Render as a bottom sheet on mobile. (77956)
  • Select: Support placeholder prop on Trigger. (78076)
  • Use the theme gray for muted Text. (77999)
  • docgen: Automatic documentation handle for TypeScript overloads. (77558)
  • ui/Tooltip, ui/IconButton: Add positioner slot APIAPI An API or Application Programming Interface is a software intermediary that allows programs to interact with each other and share data in limited, clearly defined ways.. (78089)

Block Library

  • Added Translator Context for Reply. (77891)
  • Embed: Add [ embed ] shortcode transform. (77937)
  • Shortcode: Offer block-specific transforms when text matches a registered shortcode. (77944)
  • i18ni18n Internationalization, or the act of writing and preparing code to be fully translatable into other languages. Also see localization. Often written with a lowercase i so it is not confused with a lowercase L or the numeral 1. Often an acquired skill.: Add context to table headerHeader The header of your site is typically the first thing people will experience. The masthead or header art located across the top of your page is part of the look and feel of your website. It can influence a visitorโ€™s opinion about your content and you/ your organizationโ€™s brand. It may also look different on different screen sizes./footer label. (78007)

Block Editor

  • Fix the target block for copying direct insert block attributes. (77877)
  • Make Block Inserter search input sticky while scrolling. (77698)
  • i18n: Add context to scale. (76917)

Post Editor

  • Add lint rule for non-module stylesheet imports. (77984)
  • Remove root UUID dependency. (77960)

Data Layer

  • WidgetWidget A WordPress Widget is a small block that performs a specific function. You can add these widgets in sidebars also known as widget-ready areas on your web page. WordPress widgets were originally created to provide a simple and easy-to-use way of giving design and structure control of the WordPress theme to the user. Types: Bootstrap registry into the dashboard client. (77917)
  • Widget Types: Replace bootstrap with resolver. (77847)

npm Packages

  • Build: Add widgets/ folder support to wordpress/build. (77347)
  • Taxonomy edit route: Declare @wordpress/base-styles as dependency. (77901)

Bug Fixes

Components

  • ColorPalette: Fix duplicate-key warnings and incorrect selection with identical color values. (78004)
  • ColorPicker: Fix inconsistent HEX input clearing behavior. (77912)
  • ExternalLink: Fix focus outline under wp-admin. (77935)
  • Grid: Fix keyboard activation on draggable items. (78163)
  • Grid: Render resize handle as a component. (77888)
  • Link: Fix focus outline around the new-tab icon. (77910)
  • Select: Fix disabled cursor styles. (78112)
  • Select: Hide user agent focus ring in popup. (77919)
  • TabPanel: Fix tab indicator animation. (77812)
  • Text: Fix render prop CSSCSS Cascading Style Sheets. defenses. (78172)
  • ui/Drawer: Forward render on Drawer.Content to the scroll container. (77941)
  • ui/Drawer: Polish open/close animation, fix swipe on content padding. (77800)
  • Admin UIUI User interface: Fix nested landmark in Page header. (78001)
  • UI: Use string label type for form controls. (77860)
  • ui/CollapsibleCard: Support rendering Header as a heading element. (77962)
  • Image editor: Improve media editor crop accessibility and dialog focus. (78047)

Connectors

  • Add is_active callback support to plugin registration. (77897)
  • Clarify AI plugin callout copy. (78043)
  • Fix: Only auto-register settings if the plugin the connector references is installed and active. (77273)
  • Increase the right padding of the callout for the mobile layout. (78126)

Block Library

  • Embed: Tighten raw URLURL A specific web address of a website or web page on the Internet, such as a websiteโ€™s URL www.wordpress.org transform isMatch. (78021)
  • Fix: The buttons block shows the inserter picker when multiple allowed blocks are registered. (77858)
  • Fix: Shortcode block does not render in Navigation Overlay. (77511)

Post Editor

  • Editor: Paginate revisions slider by 100 per page. (77200)
  • Notes: Keep tall floating threads scrollable on short content. (77821)
  • defaultRenderingMode value not respected when changed using block_editor_settings_all. (77870)
  • i18n: Add context to (site) identity. (78132)
  • Site Editor: Preserve non-global editor styles in pattern previews. (77957)
  • Preserve the leading number when pasting single-line text like dates. (77949)
  • Add aria-label to the Revisions button in the Post Summary sidebarSidebar A sidebar in WordPress is referred to a widget-ready area used by WordPress themes to display information that is not a part of the main content. It is not always a vertical column on the side. It can be a horizontal rectangle below or above the content area, footer, header, or any where in the theme.. (78140)
  • Revisions diff markers: Enforce 24ร—24px minimum target size (WCAG 2.5.8). (77671)
  • Revisions: Add diagonal stripe patterns to diff markers to avoid color-only distinction. (77904)
  • Revisions: Add tooltip to diff marker buttons. (77690)
  • Avoid using centered text. (78125)
  • Editor: Improve revisions diff pairing performance. (77126)

Data Layer

  • RTC: Fix title divergence between users on page refresh after title update. (77666)
  • isFulfilled: Donโ€™t change resolution state, call in resolveSelect. (78151)
  • Fix lockfile drift and missing dep from content-types consolidation. (78109)
  • Guidelines REST: Require read access for the standard route. (77843)
  • Fix popover bind hydration. (77797)

Collaboration

  • RTC: Fix find_canonical_storage_post_id() always returning null. (78053)
  • RTC: Fix race condition on room creation, which can cause a split update log. (77675)
  • Media: Guard gutenberg_delete_heic_companion_file() against non-string $metadata[โ€˜originalโ€™]. (78128)

Experiments

  • Add first end-to-end tests for Taxonomies. (77828)
  • Add taxonomy visibility fields. (77835)
  • Add term/post type count fields in content types. (78157)
  • Auto fill slug from a singular label for taxonomies and post types. (77938)
  • Content Types: Various improvements to post type and taxonomy management, including duplicate/view/quick-edit actions, shared utility reuse, and caching and routing fixes. (77754, 77844, 77853, 77885, 77916, 78058, 78059, 78091, 78099, 78102, 78104, 78143, 78146, 78149, 77931)
  • Dashboard: Lift Suspense + error boundary into widget chrome and add a default header. (78012)
  • Grid: Add DashboardLanes masonry surface. (78107)
  • Integrate useView into content types lists. (78197)
  • Make Content Types _builtin. (78150)
  • Render badges for some content typesโ€™ fields. (78194)
  • Sync user taxonomies with post types. (77997)
  • Update view content types actions. (78159)
  • User post types REST controller. (77915)
  • Widget Types: REST endpoint and coreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress.-data entity. (77987)
  • Widget Types: Server-side registry, decouple wp-build pages. (77958)

Media

  • Image editor: Suppress image editor undo/redo while a crop interaction is active. (77930)
  • Image editor: Update sidebar aspect ratio and resize controls. (78046)
  • Media Editor Modal: Improve image cropper interactions (undo/redo, pan, zoom, rotation), expand keyboard shortcuts and accessibility (focus borders, landmark regions, panel headings), and fix empty metadata fields. (77782, 77826, 77863, 77871, 77875, 77878, 77898, 77899, 78078, 78189). This is an MVPMinimum Viable Product "A minimum viable product (MVP) is a product with just enough features to satisfy early customers, and to provide feedback for future product development." - WikiPedia version, and itโ€™s ready for testing here: https://make.wordpress.org/core/2026/05/21/media-editor-modal-call-for-testing/
  • Media editor: Replace fine-rotation slider with RotationRuler. (77906)
  • Grid: Add a warning about being under development. (78022)

Dashboard

  • Add WidgetDashboard.Actions compound. (78019)
  • Add an experimental WidgetDashboard rendering engine. (77770)
  • Add widget inserter modal. (78033)
  • Backend default layout filterFilter Filters are one of the two types of Hooks https://codex.wordpress.org/Plugin_API/Hooks. They provide a way for functions to modify data of other functions. They are the counterpart to Actions. Unlike Actions, filters are meant to work in an isolated manner, and should never have side effects such as affecting global variables and output.. (78040)
  • Dashboard experiment: Animate, customize UXUX User experience. (78065)
  • Dashboard experiment: New sidebar icon. (78016)
  • Dashboard experiment: Remove storybook examples for now. (78020)
  • Persist layout via wordpress/preferences. (78034)
  • REST endpoint for the default layout. (78066)
  • Staging layer for in-progress layout edits. (78071)
  • Use design animation tokens. (78204)

Block Library

  • Add Classic block migrationMigration Moving the code, database and media files for a website site from one server to another. Most typically done when changing hosting companies. notice. (78090)
  • Image block: Try syncing updated metadata fields (alt and caption) from the media editor. (78139)
  • Media Editor Experiment: Add a route, based on the media editor modal, and refactor the modal components. (77994)

Documentation

  • Block Editor: Clarify logic for โ€˜directInsertโ€™ inner blocks setting. (77873)
  • Design System: Add missing packages to Storybook introduction. (77504)
  • Docs: Shortcode transforms with wrapped content + rawHandler JSDoc. (78003)
  • Document how to ignore VSCode Workspace Settings. (77608)
  • RTC: Clarify WPBlockSelection type and link to duplicates in other packages. (77862)
  • Revise README for FocalPointPicker component to use object-position. (77722)
  • UI: Add component status notes to Storybook. (77988)
  • UI: Add missing Portal subcomponents to Storybook. (78108)
  • UI: Fix subcomponent story labels. (78210)
  • UI: Improve documentation for compound exports. (78212)
  • Update nvm installation script to version 0.40.4. (77996)
  • Update references to the default branchbranch A directory in Subversion. WordPress uses branches to store the latest development code for each major release (3.9, 4.0, etc.). Branches are then updated with code for any minor releases of that branch. Sometimes, a major version of WordPress and its minor versions are collectively referred to as a "branch", such as "the 4.0 branch".. (77606)

Code Quality

  • Add a 1-day minimum release age to npm installs. (78191)
  • Migrate native tests to the workspace. (77425)
  • Script Modules: Guard setAccessible() calls behind the PHPPHP The web scripting language in which WordPress is primarily architected. WordPress requires PHP 7.4 or higher < 8.1 check. (78137)
  • Inline z-index values across Block Manager, metaMeta Meta is a term that refers to the inside workings of a group. For us, this is the team that works on internal WordPress sites like WordCamp Central and Make WordPress. boxes, pattern chooser, sticky search, layout, and Popover, and remove local z-index helper entries. (77753, 77759, 77772, 77806, 77807, 77808, 78180, 78181)

Post Editor

  • Editor: Refactor โ€˜PostPublishPanelโ€™ into a function component. (78083)
  • Edit Post: Fix suppressed errors in the Layout component. (77940)
  • Notes: Separate intent from mechanics in openTheSidebar. (78039)

Components

  • Button: Align compound component metadata. (78184)
  • Fix the flaky Menu space key unit testunit test Code written to test a small piece of code or functionality within a larger application. Everything from themes to WordPress core have a series of unit tests. Also see regression.. (77972)
  • Menu: Fix flaky keyboard focus test. (78162)
  • SlotFill: Add dependencies to updateFill effect. (77907)

Plugin

  • Fix activation warning. (77908)
  • Fonts: Move admin menu compat from experimental to WordPress-7.0. (78227)

Block Editor

  • Add translationtranslation The process (or result) of changing text, words, and display formatting to support another language. Also see localization, internationalization. context for โ€œExit patternโ€. (78158)
  • Remove unused reducer action types. (77880)
  • Backportbackport A port is when code from one branch (or trunk) is merged into another branch or trunk. Some changes in WordPress point releases are the result of backporting code from trunk to the release branch. changes in core. (78103)
  • Refactor client-side style states to use nodes. (78000)
  • Refactor accordion to use CollapsibleCard. (77903)
  • Classic Block: Use onReplace prop for migration actions. (78113)

Data Layer

  • ESLint: Replace eslint-plugin-react-compiler with eslint-plugin-react-hooks. (69962)
  • RTC: Add regressionregression A software bug that breaks or degrades something that previously worked. Regressions are often treated as critical bugs or blockers. Recent regressions may be given higher priorities. A "3.6 regression" would be a bug in 3.6 that worked as intended in 3.5. tests for the data corruption bugbug A bug is an error or unexpected result. Performance improvements, code optimization, and are considered enhancements, not defects. After feature freeze, only bugs are dealt with, with regressions (adverse changes from the previous version) being the highest priority. due to the cursor scope issue. (77662)

Tools

Testing

  • Add RTC y-websocket-server tests. (78179)
  • Add createRecord end-to-end request util. (78017)
  • Configure global fallbackFn for timezone-mock to handle Date subclasses. (78056)
  • Consolidate CI workflows for changelog testing. (78169)
  • E2E: Remove slash from bad embed request mock. (78200)
  • E2E: Reset preferences after navigable-toolbar tests. (78115)
  • Experiment: Add first basic user post types end-to-end tests and update taxonomy tests. (77998)
  • Fix flaky end-to-end tests for publish panel, Pages dataview keyboard navigation, homepage settings, and post content focus mode. (78054, 78063, 78082, 78084)
  • Revision: Fix failing end-to-end test. (78079)
  • Site Editor end-to-end tests: Reimplement the wait for load. (77981)
  • end-to-end tests: Use editPost and createNewPost helpers everywhere. (78170)

Build Tooling

  • Build: Update lint-staged from v10 to v16. (77963)
  • Fix: Guard require_once calls in generated PHP files against deployment race conditions. (78110)
  • Remove save-exact from .npmrc. (78196)
  • Tests: Fix argument forwarding for test: Unit workspace scripts. (77541)
  • Update TypeScript to tsgo (try 2). (77682)
  • bin/dev.mjs: Warn on stale webpack watching this checkout. (78098)
  • Upgrade and unify @types/node version. (77900)

Various

  • Update the UUID dependency. (77848)
  • Fill in end-to-end tests for client-side media processing. (75949)

Components

  • Support object values in the Select primitive. (77861)
  • Update date-fns to v4.1.0 in components and editor packages. (78057)

Block Library

  • Correct capitalization in help text for the Breadcrumbs block. (78175)

First-time contributors

The following PRs were merged by first-time contributors:

  • @369work: Update nvm installation script to version 0.40.4. (77996)
  • @andrea-sdl: Use theme gray for muted Text. (77999)
  • @danluu: RTC: Fix race condition on room creation, which can cause a split update log. (77675)
  • @vishnucmsminds: Add aria-label to the Revisions button in the Post Summary sidebar. (78140)

Contributors

The following contributors merged PRs in this release:

@369work @adamsilverstein @adithya-naik @aduth @afercia @alecgeatches @andrea-sdl @andreawetzel @andrewserong @anomiex @artpi @cbravobernal @ciampo @coderGtm @crisbusquets @danluu @desrosj @dmsnell @dpmehta @ellatrix @hbhalodia @himanshupathak95 @Infinite-Null @jameskoster @jorgefilipecosta @jsnajdr @lancewillett @Mamaduka @manzoorwanijk @mikachan @mirka @Mustafabharmal @ntsekouras @R1shabh-Gupta @ramonjd @retrofox @sarthaknagoshe2002 @scruffian @shail-mehta @simison @t-hamano @talldan @tellthemachines @timse201 @tyxla @USERSATOSHI @vishnucmsminds @vishnupprajapat @youknowriad @yuliyan

#block-editor, #core-editor, #gutenberg, #gutenberg-new

WordPress 7.1 Call for Volunteers

Planning is underway for WordPress 7.1!ย  This post outlines the proposed schedule along with a call for volunteers to support the release process.

Following the typical cadence, the proposed final release date for 7.1 is Wednesday, August 19, 2026.ย  This proposed timeline remains flexible for the resulting Release Squad and adjustments can be made if necessary as they determine what timeline works best for their schedule.

Proposed Schedule

MilestoneDate
Alpha BeginsImmediately (7.1-alpha began in trunktrunk A directory in Subversion containing the latest development code in preparation for the next major release cycle. If you are running "trunk", then you are on the latest revision. on March 27th with [62161], closed then re-opened)
BetaBeta A pre-release of software that is given out to a large group of users to trial under real conditions. Beta versions have gone through alpha testing in-house and are generally fairly close in look, feel and function to the final product; however, design changes often occur as part of the process. 1Wednesday, July 15
Beta 2Wednesday, July 22
Beta 3Wednesday, July 29
Release Candidaterelease candidate One of the final stages in the version release cycle, this version signals the potential to be a final release to the public. Also see alpha (beta). 1Wednesday, August 5
Release Candidate 2Wednesday, August 12
Dry RunTuesday, August 18
Final ReleaseWednesday, August 19

As always, all dates are subject to change based on development progress.


Call for Volunteers

Each WordPress release depends on contributors from across the project coming together to make it a success.ย 

As with the 6.7, 6.8, 6.9, and 7.0 release cycles, WordPress 7.1 will continue the approach of forming a smaller, focused Release Squad based on feedback received.ย  This streamlined structure places more emphasis on collaboration with the various Make Team Reps, who are encouraged to help coordinate efforts from within their respective teams.ย  The goals are to reduce the overhead on the Release Squad while still ensuring each teamโ€™s contributions and priorities are represented throughout the cycle, and to reduce overlap between a Make Team RepTeam Rep A Team Rep is a person who represents the Make WordPress team to the rest of the project, make sure issues are raised and addressed as needed, and coordinates cross-team efforts. and that teamโ€™s Release Squad Leads.ย  Noteworthy Contributors will be captured from Team Reps towards the end of the release cycle.

While the end goal is to publish the final release of WordPress 7.1 at WordCamp US, traveling to or attending WordCampWordCamp WordCamps are casual, locally-organized conferences covering everything related to WordPress. They're one of the places where the WordPress community comes together to teach one another what theyโ€™ve learned throughout the year and share the joy. Learn more. US is not a requirement to serve on the release squad.ย  All communication related to the release process will continue to take place in the #core SlackSlack Slack is a Collaborative Group Chat Platform https://slack.com/. The WordPress community has its own Slack Channel at https://make.wordpress.org/chat/ channel.

If you are interested in helping lead WordPress 7.1 in one of the following roles, please comment below or reach out in the #7-1-release-leads Slack channel:

  • Release LeadRelease Lead The community member ultimately responsible for the Release. โ€“ sets overall goals, makes final decisions on merging, gives final reviews where needed
  • Release Coordination โ€“ helps manage timelines, cross-team collaboration, and status updates
  • Tech Leads โ€“ oversees coreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. development (including GutenbergGutenberg The Gutenberg project is the new Editor Interface for WordPress. The editor improves the process and experience of creating new content, making writing rich content much simpler. It uses โ€˜blocksโ€™ to add richness rather than shortcodes, custom HTML etc. https://wordpress.org/gutenberg/), triagetriage The act of evaluating and sorting bug reports, in order to decide priority, severity, and other factors., and critical issues
  • Triage Lead โ€“ help monitor issues, shepherd patches, and guide contributors
  • Test Lead โ€“ coordinates testing efforts across the community and test reports

Whether you have led a release before or are looking to get involved for the first time, there are many ways to contribute.ย  Volunteers of all backgrounds and experience levels are welcome!

If you are interested in volunteering, please leave a comment below noting your preferred area(s) by Friday, June 5th.ย  @4thhubbard (or a designee), will review the nominations shortly after to confirm and announce the release squad as soon as possible.

Together we can make WordPress 7.1 the best one yet!

Props to @jorbin @4thhubbard for reviewing this post.

#7-1

Commence: Operation WP 7.1

With the release of 7.0 earlier today, trunk is finally open to any and all commits for WordPress 7.1.

Trunktrunk A directory in Subversion containing the latest development code in preparation for the next major release cycle. If you are running "trunk", then you are on the latest revision. is now WordPress 7.1-alpha

While the common practice is for trunk to open once the next release has been branched, closing the primary branchbranch A directory in Subversion. WordPress uses branches to store the latest development code for each major release (3.9, 4.0, etc.). Branches are then updated with code for any minor releases of that branch. Sometimes, a major version of WordPress and its minor versions are collectively referred to as a "branch", such as "the 4.0 branch". to any commits unrelated to 7.0 was necessary to avoid making it more complicated to add, modify, or remove features from the release during the extension to the cycle to evaluate the state and readiness of the Real-time collaboration feature.

Thank you to everyone for your continued patience.

Backporting to the numbered branches

As a reminder, the โ€œdouble signoffโ€ policy applies to changes being made to any numbered version branch. The dev-feedback commit keywords should be used to request a second committercommitter A developer with commit access. WordPress has five lead developers and four permanent core developers with commit access. Additionally, the project usually has a few guest or component committers - a developer receiving commit access, generally for a single release cycle (sometimes renewed) and/or for a specific component.โ€™s review, with dev-reviewed being added after an additional signoff is given.

More information on this process can be found in the Make WordPress Core Handbook.

Props @jorbin, @audrasjb, @amykamala, @4thhubbard, @mosescursor for peer review.

#7-1

WordPress 7.0 Release Day Process

Preparation for the WordPress 7.0 release is underway.

This post shares the release process, including the timeline and how you can help.

Release Timeline Overview


24-Hour Code Freeze

A mandatory 24-hour code freeze will be in effect for the 7.0 branchbranch A directory in Subversion. WordPress uses branches to store the latest development code for each major release (3.9, 4.0, etc.). Branches are then updated with code for any minor releases of that branch. Sometimes, a major version of WordPress and its minor versions are collectively referred to as a "branch", such as "the 4.0 branch". after the Dry Run finishes on April 14th.

What does this mean?

No source code for 7.0 (i.e., in the 7.0 branch) can be changed during these 24 hours.

What happens if a critical bugbug A bug is an error or unexpected result. Performance improvements, code optimization, and are considered enhancements, not defects. After feature freeze, only bugs are dealt with, with regressions (adverse changes from the previous version) being the highest priority. is reported during this period?

The release squad will meet with committers and maintainers to determine if the issue is a blockerblocker A bug which is so severe that it blocks a release..

  • If yes, another RCrelease candidate One of the final stages in the version release cycle, this version signals the potential to be a final release to the public. Also see alpha (beta). release happens, and the release process restarts (meaning the Dry Run repeats, and then the 24-hour code freeze clock restarts).
  • If not, then the bug is targeted for 7.1.

The Release Party

The WordPress 7.0 Release Party will start on Wednesday, May 20, 2026 at 17:00 UTC in the #core Slack channel.

The release party walks through the steps in the Major Version Release process if you want to follow along.

Please note: releasing a major version requires more time than releasing a betaBeta A pre-release of software that is given out to a large group of users to trial under real conditions. Beta versions have gone through alpha testing in-house and are generally fairly close in look, feel and function to the final product; however, design changes often occur as part of the process. or release candidaterelease candidate One of the final stages in the version release cycle, this version signals the potential to be a final release to the public. Also see alpha (beta)..ย  There are more steps in the process. If any last-minute issues need addressing, those issues will take more time, as well.

How You Can Help

A key part of the release process is checking that the ZIP packages work on all the available server configurations. If you have any of the less commonly used servers available for testing (IIS, in particular), that would be super helpful. Servers running older versions of PHPand MySQLMySQL MySQL is a relational database management system. A database is a structured collection of data where content, configuration and other options are stored. https://www.mysql.com will also need testing.

You can start this early by running the WordPress 7.0ย  RC4 packages, which are built using the same method as the final packages.

During the release party, you will get access to several ways to help test the release package.

Tips on What to Test

In particular, testing the following types of installs and updates would be much appreciated:

  • Does a new WordPress install work correctly? This includes running through the manual install process, as well as WP-CLIWP-CLI WP-CLI is the Command Line Interface for WordPress, used to do administrative and development tasks in a programmatic way. The project page is http://wp-cli.org/ https://make.wordpress.org/cli/ or one-click installers.
  • Test upgrading from various versions.
  • Remove the wp-config.php file and test a fresh install.
  • Test single site and multisitemultisite Used to describe a WordPress installation with a network of multiple blogs, grouped by sites. This installation type has shared users tables, and creates separate database tables for each blog (wp_posts becomes wp_0_posts). See also network, blog, site/networknetwork (versus site, blog)(both subdirectory and subdomain) installations.
  • Does it upgrade correctly?ย  Are the files listed in $_old_files removed when you upgrade?
  • Does multisite upgrade properly?

Testing the following user flows on both desktop and mobile would be great to validate each function as expected:

  • Publish a post, including a variety of different blocks.
  • Comment on the post.
  • Install a new pluginPlugin A plugin is a piece of software containing a group of functions that can be added to a WordPress website. They can extend functionality or add new features to your WordPress websites. WordPress plugins are written in the PHP programming language and integrate seamlessly with WordPress. These can be free in the WordPress.org Plugin Directory https://wordpress.org/plugins/ or can be cost-based plugin from a third-party./theme, or upgrade an existing one.
  • Change the site language.
  • If youโ€™re a plugin developer, or if there are complex plugins you depend upon, test that theyโ€™re working correctly.

For a more in-depth list of what features to test, make sure to check the Help Test WordPress 7.0 post.

Props to the following for help contributing to this post:ย @jeffpaul.

#7-0, #development, #dry-run, #releases

WordPress 7.0 Release Candidate 5

WordPress 7.0 RC5 is ready for download and testing!

This version of the WordPress software is still under development. Please do not install, run, or test this version of WordPress on production or mission-critical websites. Instead, itโ€™s recommended to test RC5 on a test server and site.

WordPress 7.0 RC5 can be tested using any of the following methods:

PluginPlugin A plugin is a piece of software containing a group of functions that can be added to a WordPress website. They can extend functionality or add new features to your WordPress websites. WordPress plugins are written in the PHP programming language and integrate seamlessly with WordPress. These can be free in the WordPress.org Plugin Directory https://wordpress.org/plugins/ or can be cost-based plugin from a third-party.Install and activate the WordPress Beta Tester plugin on a WordPress install. (Select the โ€œBleeding edgebleeding edge The latest revision of the software, generally in development and often unstable. Also known as trunk.โ€ channel and โ€œBetaBeta A pre-release of software that is given out to a large group of users to trial under real conditions. Beta versions have gone through alpha testing in-house and are generally fairly close in look, feel and function to the final product; however, design changes often occur as part of the process./RCrelease candidate One of the final stages in the version release cycle, this version signals the potential to be a final release to the public. Also see alpha (beta). Onlyโ€ stream.)
Direct DownloadDownload the RC5 version (zip) and install it on a WordPress website.
Command LineUse this WP-CLI command: wp core update --version=7.0โ€“RC5
WordPress PlaygroundUse the WordPress Playground instance to test the software directly in your browser.ย  No setup is required โ€“ just click and go!ย 

The scheduled final release date for WordPress 7.0 May 20, 2026. The full release schedule can be found here. Your help testing Beta and RC versions is vital to making this release as stable and powerful as possible. Thank you to everyone who helps with testing!

Please continue checking the Make WordPress Core blog for 7.0-related posts in the coming weeks for more information.ย 

Whatโ€™s new in WordPress 7.0? Check out the Field Guide for details and highlights.

This is an extra RC

Testing for issues is critical to the development of any software, and testing works!

This RC is being released to test changes prior to the final release of 7.0.

You can browse the technical details for all issues addressed since Beta 5 using these links:

The 7.0 release is scheduled for Wednesday, May 20th. As always, a successful release depends on your confirmation during testing. So please download and test!

How to test this release

Your help testing the WordPress 7.0 RC5 version is key to ensuring that the final release is the best it can be. While testing the upgrade process is essential, trying out new features is equally important. This detailed guide will walk you through testing features in WordPress 7.0.

If you encounter an issue, please report it to the Alpha/Beta area of the support forums or directly to WordPress Trac if you are comfortable writing a reproducible bugbug A bug is an error or unexpected result. Performance improvements, code optimization, and are considered enhancements, not defects. After feature freeze, only bugs are dealt with, with regressions (adverse changes from the previous version) being the highest priority. report. You can also check your issue against a list of known bugs.

Curious about testing releases in general? Follow along with the testing initiatives in Make Core and join the #core-test channel on Making WordPress Slack.

A RC5 haiku

Gift for everyone

RC5 shines like the sun

Test it and have fun

Props to @sergeybiryukov, @huzaifaalmesbah for proofreading and review.

#7-0, #development, #release

Performance Chat Summary: 19 May 2026

The full chat log is available beginning here on Slack.

WordPress Performance TracTrac An open source project by Edgewall Software that serves as a bug tracker and project management tool for WordPress. tickets

  • @westonruter shared updates related to WordPress 7.0 ahead of the scheduled release the next day. Regarding loading blockBlock Block is the abstract term used to describe units of markup that, composed together, form the content or layout of a webpage using the WordPress editor. The idea combines concepts of what in the past may have achieved with shortcodes, custom HTML, and embed discovery into a single consistent API and user experience. styles on classic themes, which had several fixes during the 7.0 release cycle, @westonruter updated the Load Combined Core Block Assets pluginPlugin A plugin is a piece of software containing a group of functions that can be added to a WordPress website. They can extend functionality or add new features to your WordPress websites. WordPress plugins are written in the PHP programming language and integrate seamlessly with WordPress. These can be free in the WordPress.org Plugin Directory https://wordpress.org/plugins/ or can be cost-based plugin from a third-party. to bump the โ€œTested up toโ€ version and added an inline adminadmin (and super admin) notice for sites on 7.0 with the plugin active, asking users to re-check whether the plugin is still needed.

Performance Lab Plugin (and other performance plugins)

  • @westonruter also updated the โ€œTested up toโ€ version for the Instant Back/Forward plugin, which is included among the features listed in Performance Lab. @westonruter mentioned that the โ€œTested up toโ€ versions for the Performance Lab plugins still need to be updated on WordPress.orgWordPress.org The community site where WordPress code is created and shared by the users. This is where you can download the source code for WordPress core, plugins and themes as well as the central location for community conversations and organization. https://wordpress.org/, though the changes had already been done in GitGit Git is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency. Git is easy to learn and has a tiny footprint with lightning fast performance. Most modern plugin and theme development is being done with this version control system. https://git-scm.com/.
  • @westonruter shared that PR #2469 bumps the minimum supported PHPPHP The web scripting language in which WordPress is primarily architected. WordPress requires PHP 7.4 or higher version in the Performance Lab monorepo from PHP 7.2 to PHP 7.4.
  • @westonruter also shared PR #2479, which adds an .npmrc file to harden npm installs against supply chain attacks. Security was improved with ignore-scripts = true in the .npmrc among other enhancements. @westonruter noted that this means the pre-commit Husky hooksHooks In WordPress theme and development, hooks are functions that can be applied to an action or a Filter in WordPress. Actions are functions performed when a certain event occurs in WordPress. Filters allow you to modify certain functions. Arguments used to hook both filters and actions look the same. are no longer installed automatically, so the handbook documentation was updated to mention that npm run prepare now needs to be run during the initial setup.
  • @westonruter also shared PR #2482, which fixes plugin installation and activation flows in Performance Lab when WordPress is using FTPFTP FTP is an acronym for File Transfer Protocol which is a way of moving computer files from one computer to another via the Internet. You can use software, known as a FTP client, to upload files to a server for a WordPress website. https://codex.wordpress.org/FTP_Clients filesystem methods such as ftpext or ftpsockets. The issue was originally discovered while testing the new Connectors screen in CoreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress., where provider plugins failed to install. @westonruter mentioned that the PR is still being kept as a draft until the related GutenbergGutenberg The Gutenberg project is the new Editor Interface for WordPress. The editor improves the process and experience of creating new content, making writing rich content much simpler. It uses โ€˜blocksโ€™ to add richness rather than shortcodes, custom HTML etc. https://wordpress.org/gutenberg/ PR is merged.
  • @westonruter also shared PR #2473 to improve GitHubGitHub GitHub is a website that offers online implementation of git repositories that can easily be shared, copied and modified by other developers. Public repositories are free to host, private repositories require a paid subscription. GitHub introduced the concept of the โ€˜pull requestโ€™ where code changes done in branches by contributors can be reviewed and discussed before being merged by the repository owner. https://github.com/ Copilot usage in the Performance Lab repository by pre-warming wp-env in the coding agent setup steps. @westonruter later mentioned that the PR had been approved and was being merged.
  • @westonruter added that several PRs still remain in need of review.

Open Floor

  • @adamsilverstein shared a newly opened issue to explore adding AI based performance recommendations to the plugin when WordPress 7.0 is available and AI is configured #2485
    • @adamsilverstein mentioned that this may work better as a separate plugin and shared that AI has improved enough to provide genuinely useful recommendations to users and potentially even fix issues automatically. @adamsilverstein also referenced the earlier wp-performance-wizard project built two years ago, noting that it already provided good results at the time and that the new idea would likely start with a simpler approach.

Our next chat will be held on Tuesday, June 2, 2026 at 16:00 UTC in the #core-performance channel in Slack.

#core-performance, #hosting, #performance, #performance-chat, #summary

X-post: Leadership transition for the Core AI team

X-comment from +make.wordpress.org/ai: Comment on Leadership transition for the Core AI team

Removing title attributes in author link functions

WordPress 7.0 removesโ€”or facilitates removingโ€”title attributes from links relating to post authors.

Authorโ€™s Website link (from the user profile)

get_the_author_link() and the_author_link() have a new $use_title_attr parameter, which can be set to false to remove the โ€œVisit Authorโ€™s websiteโ€ tooltip. By default, these functions continue to include a title attribute.

<?php
// either
the_author_link();
// or
echo get_the_author_link();

Default output is the same in 7.0 as in 6.9:
<a href="https://author.example.com" title="Visit Author&#8217;s website" rel="author external">Author</a>

<?php
// either
the_author_link( false );
// or
echo get_the_author_link( false );

Output in 7.0:
<a href="https://author.example.com" rel="author external">Author</a>

Authorโ€™s posts archive link

The โ€œPosts by Authorโ€ title attribute is removed from the link by default. However, the title text is still available for use within the the_author_posts_link hook, along with the authorโ€™s display name.

<?php
// either
the_author_posts_link();
// or
echo get_the_author_posts_link();

Output in 6.9:
<a href="https://example.org/author/author/" title="Posts by Author" rel="author">Author</a>

Output in 7.0:
<a href="https://example.org/author/author/" rel="author">Author</a>

Editing the posts link text

To replace the author name with the โ€œPosts by Authorโ€ text, use multiple arguments in the the_author_posts_link filterFilter Filters are one of the two types of Hooks https://codex.wordpress.org/Plugin_API/Hooks. They provide a way for functions to modify data of other functions. They are the counterpart to Actions. Unlike Actions, filters are meant to work in an isolated manner, and should never have side effects such as affecting global variables and output..

<?php
/**
 * Edits text for the link to the author page of the author of the current post.
 *
 * Add "Posts by" before the author's display name (or after the name in some translations):
 * `<a href="https://example.org/author/author/" rel="author">Posts by Author</a>`
 *
 * @param string $link   HTML link.
 * @param string $author Author's display name. Default empty string.
 * @param string $title  Text originally used for a title attribute. Default empty string.
 */
function wpdocs_author_posts_link( $link, $author = '', $title = '' ) {
	// In WordPress versions prior to 7.0, $author and $title would be empty.
	if ( '' !== $title && '' !== $author ) {
		$link = str_replace(
			'>' . $author . '</a>',
			'>' . esc_html( $title ) . '</a>', 
			$link
		);
	}

	return $link;
}
add_filter( 'the_author_posts_link', 'wpdocs_author_posts_link', 10, 3 );

Authors list HTMLHTML HyperText Markup Language. The semantic scripting language primarily used for outputting content in web browsers.

wp_list_authors() simply removes the โ€œPosts by Authorโ€ tooltips.

<?php
wp_list_authors(
	array(
		'html' => true // This is true by default.
	)
);

Output in 6.9:
<li><a href="https://example.org/author/author/" title="Posts by Author">Author</a></li><li><a href="https://example.org/author/editor/" title="Posts by Editor">Editor</a></li>

Output in 7.0:
<li><a href="https://example.org/author/author/">Author</a></li><li><a href="https://example.org/author/editor/">Editor</a></li>

For more information, refer to #62835.


Props to @amykamala and @audrasjb for review.

#7-0, #dev-notes, #dev-notes-7-0

WordPress 7.0 Field Guide

This guide outlines major developer features and breaking changes in 7.0 and is published in the Release Candidaterelease candidate One of the final stages in the version release cycle, this version signals the potential to be a final release to the public. Also see alpha (beta). phase to help inform WordPress extending developers, CoreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. developers, and others.

There are more than 419 Core Trac tickets included in WordPress 7.0, over 76 of which are enhancements and feature requests, and more than 300 bug fixes. This release includes 40+ tickets focused on the Editor, and 90+ tickets focused on wp-admin.

Additionally, this release includes 411 enhancements and more than 486 bug fixes for the Editor, Dashboard, and AI integration.

Below is a breakdown of the most important developer-related changes included in WordPress 7.0.

AI building blocks of the future

Step into a new era with WordPress 7.0, shipped with AI integration and abilities. Provider-agnostic architecture gives you full control over units and capabilitiescapability Aย capabilityย is permission to perform one or more types of task. Checking if a user has a capability is performed by the current_user_can function. Each user of a WordPress site might have some permissions but not others, depending on theirย role. For example, users who have the Author role usually have permission to edit their own posts (the โ€œedit_postsโ€ capability), but not permission to edit other usersโ€™ posts (the โ€œedit_others_postsโ€ capability). while tapping into the endless opportunities AI can bring to life. These critical building blocks are just the beginning, paving the way for agentic collaborators and so much more.

WP AI Client

WordPress 7.0 unlocks AI capabilities right in your website. The new WP AI client adds a central interface that lets plugins communicate with generative AI models while remaining provider-agnostic. WordPress Core handles request routing for you. Managed in the Settings > Connectors screen with APIAPI An API or Application Programming Interface is a software intermediary that allows programs to interact with each other and share data in limited, clearly defined ways. keys funneled through the Connectors API, you can start with some preset models and add your favorites.

As a bonus, the Abilities API is integrated directly into the WP AI Client, delivering new and expansive AI abilities that can be built into workflows that run abilities fluidly, one after another.

PluginPlugin A plugin is a piece of software containing a group of functions that can be added to a WordPress website. They can extend functionality or add new features to your WordPress websites. WordPress plugins are written in the PHP programming language and integrate seamlessly with WordPress. These can be free in the WordPress.org Plugin Directory https://wordpress.org/plugins/ or can be cost-based plugin from a third-party. developers can use the new using_model_preference() function to indicate which models to use in order of preference, then add feature detection to match capabilities against available models โ€“ lowering cost and speeding up processing time. The AI Client includes a series of advanced configuration controls, and a WP_AI_Client_Prompt_Builder class for calling methods. For easy upgrades, the wordpress/wp-ai-client package handles transitioning to 7.0 automatically.

Client-Side Abilities API

WordPress 7.0 expands on the Abilities API by introducing a JavaScriptJavaScript JavaScript or JS is an object-oriented computer programming language commonly used to create interactive effects within web browsers. WordPress makes extensive use of JS for a better user experience. While PHP is executed on the server, JS executes within a userโ€™s browser. https://www.javascript.com counterpart: the Client-Side Abilities package with new and hybrid abilities, an intuitive UIUI User interface, a command palette, and filterFilter Filters are one of the two types of Hooks https://codex.wordpress.org/Plugin_API/Hooks. They provide a way for functions to modify data of other functions. They are the counterpart to Actions. Unlike Actions, filters are meant to work in an isolated manner, and should never have side effects such as affecting global variables and output. and query functionality.

Plugin developers can enqueue @wordpress/core-abilities to automatically fetch and register server-side abilities via the REST APIREST API The REST API is an acronym for the RESTful Application Program Interface (API) that uses HTTP requests to GET, PUT, POST and DELETE data. It is how the front end of an application (think โ€œphone appโ€ or โ€œwebsiteโ€) can communicate with the data store (think โ€œdatabaseโ€ or โ€œfile systemโ€) https://developer.wordpress.org/rest-api/, or enqueue only @wordpress/abilities to work with the pluginโ€™s client-side abilities. Registered abilities are organized in customizable categories, and abilities and categories can be unregistered via the PHPPHP The web scripting language in which WordPress is primarily architected. WordPress requires PHP 7.4 or higher API. ย MetaMeta Meta is a term that refers to the inside workings of a group. For us, this is the team that works on internal WordPress sites like WordCamp Central and Make WordPress. data annotation is supported, and core/abilities makes useSelect available for reactive queries in ReactReact React is a JavaScript library that makes it easy to reason about, construct, and maintain stateless and stateful user interfaces. https://reactjs.org components.

AI Connectors Screen

Manage all of your AI provider connections in one place on the new Connectors screen. Found under Settings > Connectors in the dashboard, the screen gives you everything you need to manage your connections. Registered connectors are displayed automatically on the page, and so is detailed registry meta data in a card format. The Connectors screen includes three default providers: Anthropic, Google, and OpenAI, while also allowing users to configure their own connections.

WP 7.0 Connectors Screen

Connectors API

The Connectors API is the backbone of the Connectors screen; an extensibility API that facilitates and supports the inclusion of agents.

The API supports two authentication methods (api_key and none) based on provider metadata, and is designed to facilitate additional connector types in future releases. The Connectors API uses the WP AI Clientโ€™s default registry to automatically discover providers, and corresponding metadata to generate connectors, while connectors authenticated via other methods are stored in the PHP registry. You can use the wp_connectors_init action to override connectors metadata, which will be the key for registering new connector types in future releases. The API includes three public functions for querying the registry, and the frontend UI can be customized using client-side JavaScript registration.

Modernized Dashboard

WordPress 7.0 delivers an upgraded adminadmin (and super admin) experience, with a sleek, new color scheme named โ€œModernโ€, numerous enhancements throughout the dashboard, and seamless visual transitions as you navigate from screen to screen. A new Command Palette shortcut in the upper admin bar lets you access tools from anywhere in the dashboard, while a new dedicated dashboard page for font management centralizes and simplifies managing fonts. The enhanced iframed post editor stabilizes the screen, while editors leave comments on blocks, receive notifications for notes and even visually compare two revision versions.

New admin color scheme and styles

WordPress administration has been reinvigorated with a new, chic color scheme throughout the dashboard. The new Modern admin theme is live across admin headers, the CustomizerCustomizer Tool built into WordPress core that hooks into most modern themes. You can use it to preview and modify many of your siteโ€™s appearance settings., the color scheme picker, script loader, various user functions, and even the multisitemultisite Used to describe a WordPress installation with a network of multiple blogs, grouped by sites. This installation type has shared users tables, and creates separate database tables for each blog (wp_posts becomes wp_0_posts). See also network, blog, site user signup has been reskinned. The Modern theme is clean and easy on the eyes, boasting a refreshed color palette, higher contrast, and upgraded typography, uplifting and elevating the admin experience.

View Transitions in WP Admin

Navigating the dashboard is a smooth ride in 7.0. User views slide from one screen to the next as you move across wp-admin. Cross-document view transitions use distinct transition names for admin menu items in order to facilitate this simple visual slide effect, firing when the active submenu changes between screens. With consideration for all users, View Transitions are only activated if a preference is not set for reduced motion on the OS level.

Command Palette shortcut

Access your editing toolset from anywhere in the dashboard with a single click of the new Command Palette shortcut. WordPress 7.0 includes a โŒ˜K or Ctrl+K icon for logged-in users in the upper admin bar, which unfurls the command palette on click. The new shortcut speedruns editing and gives full control from anywhere in the dash: while building, designing or simply browsing notes.

Font Library

The Font Library has expanded in 7.0 with the introduction of a dedicated font management page. Now you and your team can manage, upload and install fonts from one place in blockBlock Block is the abstract term used to describe units of markup that, composed together, form the content or layout of a webpage using the WordPress editor. The idea combines concepts of what in the past may have achieved with shortcodes, custom HTML, and embed discovery into a single consistent API and user experience., hybrid and classic themes.

Visual RevisionsRevisions The WordPress revisions system stores a record of each saved draft or published update. The revision system allows you to see what changes were made in each revision by dragging a slider (or using the Next/Previous buttons). The display indicates what has changed in each revision.

In WordPress 7.0, Visual Revisions make editing easier and more intuitive, while adding insight into post or page edit history. Users can now visually compare two revision versions directly in the Editor using a slider bar to visually switch between revisions. The document inspector shows a summary of changes, while color indicators and sizes of changes can be seen for each location, jumping to that location on the page when clicked.

Iframed Editor

An improved, iframed editor in 7.0 offers more stability to the post editor experience. An iframed post editor is now enforced when all Block API blocks inserted into the post are using version 3 of the API or higher. If not, the iframeiframe iFrame is an acronym for an inline frame. An iFrame is used inside a webpage to load another HTML document and render it. This HTML document may also contain JavaScript and/or CSS which is loaded at the time when iframe tag is parsed by the userโ€™s browser. is removed, upholding backwards compatibility for lower-versioned blocks.

Creative Customization

7.0 inspires creativity with enhanced design tools and new editing capabilities. Users can now customize navigation overlays on mobile, granular control of the responsiveness for individual blocks, and edit at the pattern level in different modes.

Custom Navigation Overlays on mobile

Hamburger menu overlays can now be customized and built from blocks and patterns in the Site Editor, with a dedicated Navigation Overlay Close block for placing and styling a close button anywhere within the overlay, giving users and theme authors flexibility to define mobile navigation experiences. In-place overlay selection and previews create a seamless editing experience, while users can review and assign overlays, and themes can offer default templates for quick setup.

Responsive Editing Mode

WordPress 7.0 introduces customizable block visibility based on device type, allowing editors to hide or reveal blocks by device, without affecting other viewports. Controls to launch a block visibility options modal are available in the block toolbar, block inspector sidebarSidebar A sidebar in WordPress is referred to a widget-ready area used by WordPress themes to display information that is not a part of the main content. It is not always a vertical column on the side. It can be a horizontal rectangle below or above the content area, footer, header, or any where in the theme., and command palette. Icons are displayed in List View next to blocks that have active visibility rules, indicating what viewports they are being hidden on.

Pattern Editing and contentOnly Interactivity

7.0 introduces Pattern Overrides for custom blocks, Pattern-level editing modes for contextual and symbol patterns, a parent-child tree view for buttons and list blocks, and the ability to opt out of contentOnly mode.

contentOnly mode will now be default for patterns that previously relied on unrestricted editing of their inner blocks, while a new disableContentOnlyForUnsyncedPatterns setting or block_editor_settings_all PHP filter allows contentOnly mode to be opted out of for unsynced patterns.

In 7.0 contentOnly mode is applied more broadly, so if a block is nested in a contentOnly pattern, plugin developers will want to ensure attributes representing the blockโ€™s content have "role": "content" set in block.json to retain their ability to be edited and prevent them from being hidden in list view.

Block developers can now add a "listView": true block supports declaration to add a List View tab to the block inspector with a dedicated view for the block that allows editors to update and customize the block more easily.

Block attributes that support Block Bindings now also support Pattern Overrides for custom blocks. Pattern Overrides now apply to any block, including custom blocks, and can be opted-in through block_bindings_supported_attributes filter(s). Attribute values appear in the rendered blocksโ€™ markup for dynamic and static blocks, and if static blocks have more complex attributes than the HTMLHTML HyperText Markup Language. The semantic scripting language primarily used for outputting content in web browsers. API can process, a render_callback() function can be used to ensure bound attribute values render.

Design Agility

Designing in WordPress 7.0 has become more flexible with the introduction of new blocks, new block supports and new design tools. A new Heading block, Icons block, and Breadcrumbs block are shipped with 7.0, with added lightbox support for the Gallery block, and dynamic URLURL A specific web address of a website or web page on the Internet, such as a websiteโ€™s URL www.wordpress.org support in the Navigation Link block. 7.0 includes text line indent support, text column support, dimensions width and height support, dimension presets, tools and controls, and aspect ratios for wide and full images.

Custom CSSCSS Cascading Style Sheets. on the block level

7.0 introduces the ability for custom CSS to be applied on-page to individual blocks. This allows granular control over every detail of your content, with quick and intuitive access to style controls.

Headings Block

A new Heading Block includes variations of all heading levels, easy toggling in the sidebar inspector and quick transforms, and display in the search and slash inserter.

The new Breadcrumbs Block in 7.0 automatically reflects the siteโ€™s navigational hierarchy with the ability for global application in site parts like the theme headerHeader The header of your site is typically the first thing people will experience. The masthead or header art located across the top of your page is part of the look and feel of your website. It can influence a visitorโ€™s opinion about your content and you/ your organizationโ€™s brand. It may also look different on different screen sizes.. New filters allow developers to add, remove, and modify breadcrumb trails, and specify which taxonomyTaxonomy A taxonomy is a way to group things together. In WordPress, some common taxonomies are category, link, tag, or post format. https://codex.wordpress.org/Taxonomies#Default_Taxonomies. and terms appear in the Breadcrumbs trails.

Editing the navigation block is now more simple with improved insertion, Interactivity for pattern editing and ContentOnly, and improved โ€œboundโ€ page items presentation.

Video embed cover blockย 

Videos can now be embedded as section backgrounds in the Cover block.ย 

The Gallery block now has lightbox support with an added slideshow option. Just create and insert a Gallery, click the link icon and then hit โ€˜enlarge on clickโ€™.

.0 Gallery lightbox slideshow image

Added <p> Block Supports

Text in the Paragraph block can now be arranged in a columns layout, and opt-in textIndent block support for typography has been introduced.

More details on new and improved blocks are available here:

Dimensions Support Enhancements

7.0 introduces height and width block support, typography text indent support in paragraphs, presets support, and pseudo elements support on the core/button block for ( ':hoverโ€˜, ':focusโ€˜, ':focus-visible', ':active' ) at the theme.json level. Support for preset dimensions values in theme.json have been added for block supports such as width, height and min-height, allowing the blockโ€™s variations to control the same pseudo elements, while a defined set of preset values for dimensions block supports can be leveraged to reduce the need to know and manually set the same value across multiple blocks.

Developerโ€™s toolbox

7.0 delivers an expansive developer toolbox including new tools for building, enhanced supportive structures, and expanded API abilities. Developers can now create a PHP-only representation of blocks on the server level, customize plugin list filters, and explore the foundational layout for a more extensibleExtensible This is the ability to add additional functionality to the code. Plugins extend the WordPress core software. Site Editor.

PHP Only Block Registration

WordPress 7.0 allows blocks and patterns to be created directly on the server with PHP, and registered with the Block API. The PHP-only representation of blocks and patterns includes pattern creation and syntax that streamlines block creation and bindings, registering blocks automatically When a block declares 'supports' => array( 'autoRegister' => true ) along with a render callback, exposing it to the client-side via a JavaScript global variable. PHP-registered block attributes can be edited in the editor and inspector controls can be generated from attributes, with automatic DataForm inspector controls added for PHP auto-registered blocks.

Interactivity API

Introducing a new watch() function to the @wordpress/interactivity package that subscribes to changes in any signal accessed inside a callback, re-running the callback whenever those signals change. The APIโ€™s data-wp-watch can be added to a DOM elementโ€™s lifecycle and react to state changes. The state.url value is now populated server-side during directive processing, remaining unchanged until the first client-side navigation occurs.

DataViews and DataFormsย 

Experience a new Activity layout, new Details layout, Improved modal appearance, and the ability to register 3rd party types in the Field API.

Block bindings API iterationsย 

Introducing the Block bindings and patterns overrides feature, with the ability to filter available attribute sources by format, aligning with the Field API.

New plugin list filterย 

A new plugins_list_status_text filter in get_views() has been added to allow custom filtering. Custom statuses added with plugins_list now appear as tabs to filter the related plugins. The tab label can be customized using the new plugins_list_status_text hook.

Site Editor wordpress/build and routing

In 7.0 the foundation has been laid for an extensible site editor and routing, route validation, a new @wordpress/boot package that allows plugins to build custom site-editor pages, and a refactored @wordpress/scripts that builds from directories and reduces Webpack dependence.

Bonus dev goodies

WordPress 7.0 introduces updates that span every area of Core. These changes support ongoing initiatives to create a flexible foundation for developers while boosting usability and opportunity.

Block HooksHooks In WordPress theme and development, hooks are functions that can be applied to an action or a Filter in WordPress. Actions are functions performed when a certain event occurs in WordPress. Filters allow you to modify certain functions. Arguments used to hook both filters and actions look the same. for content-like Custom Post Types.

The Block Hooks logic has been moved from individual post type filters to the REST controller.

More secure user registration

Administrator and Editor roles have been removed from the new user default selector under General in the admin screen. Site Health now alerts if one of those roles was selected before updating, while a new default_role_dropdown_excluded_roles filter allows developers to change default excluded roles.

CodeMirror Update to v5

CodeMirror has been updated to the latest v5 version, along with CSSLint, HTMLHint, and JSONLint, while Esprima has been replaced with Espree for ES6 support and JavaScript linting.

External Libraries Updates

PHP Updates

  • WordPress Coreโ€™s minimum PHP version is now 7.4ย 
  • PHPMailer has been updated to version 7.0.2, which includes a Sender address bugbug A bug is an error or unexpected result. Performance improvements, code optimization, and are considered enhancements, not defects. After feature freeze, only bugs are dealt with, with regressions (adverse changes from the previous version) being the highest priority. fix.

AccessibilityAccessibility Accessibility (commonly shortened to a11y) refers to the design of products, devices, services, or environments for people with disabilities. The concept of accessible design ensures both โ€œdirect accessโ€ (i.e. unassisted) and โ€œindirect accessโ€ meaning compatibility with a personโ€™s assistive technology (for example, computer screen readers). (https://en.wikipedia.org/wiki/Accessibility)

WordPress 7.0 includes numerous improvements and additions that make content more accessible for everyone. The login password reset now pre-populates with a username to comply with WCAGWCAG WCAG is an acronym for Web Content Accessibility Guidelines. These guidelines are helping make sure the internet is accessible to all people no matter how they would need to access the internet (screen-reader, keyboard only, etc) https://www.w3.org/TR/WCAG21/. 2.2, and a new wp_get_image_alttext() function imports Image Alt text metadata from image IPTC metadata. The word-break property has been added to .screen-reader-text to ensure screen readers wonโ€™t read text as individual letters in hidden text, and view transitions are only activated when reduced motion is not set.

Title attributes can now be removed from two functions using a new $use_title_attr parameter, and are removed from three author link functions by default.

But wait, thereโ€™s more!

7.0 offers so much more! More than 300 Core bugs, 486 GutenbergGutenberg The Gutenberg project is the new Editor Interface for WordPress. The editor improves the process and experience of creating new content, making writing rich content much simpler. It uses โ€˜blocksโ€™ to add richness rather than shortcodes, custom HTML etc. https://wordpress.org/gutenberg/ bugs, 77 enhancements and feature requests, and 35 blessed tasks have been marked as fixed in WordPress 7.0.

Below are a few to highlight:

  • Site Health: OPCache added to Site Health > Info > Server (Trac #63697)
  • Editor: Name/description metadata added to patterns when saved (Trac #64123 )
  • Script Loader: Allow scripts to depend on modules: (Trac #61500)
  • Script Loader: HTML5 script theme support deprecated and removed (Trac #64442)ย 
  • General: Allow hooking into wp_trigger_error() when WP_DEBUG is not truthy. (Trac #60886)ย 
  • Multisite: Networks and Sites no longer automatically mark website as spam when an account is marked as spam (Trac #61146)
  • Themes: PHP 8.1 deprecation notice handling (Trac #64864)
  • Editor: Bottom margins removed from all components, and margin-free styles are now default. (GB #39358)

Thank you to everyone who contributed to this version of WordPress, whether through code, testing, or something else โ€“ your contributions matter and help Make WordPress.

Props to @westonruter, @sabernhardt, @marybaum, @jeffpaul, @jorbin, @desrosj, @coffee2code, @audrasjb, @wildworks and @ankit-k-gupta for collaboration and review.

Edit 5/17/26: Add DataViews dev notedev note Each important change in WordPress Core is documented in a developers note, (usually called dev note). Good dev notes generally include a description of the change, the decision that led to this change, and a description of how developers are supposed to work with that change. Dev notes are published on Make/Core blog during the beta phase of WordPress release cycle. Publishing dev notes is particularly important when plugin/theme authors and WordPress developers need to be aware of those changes.In general, all dev notes are compiled into a Field Guide at the beginning of the release candidate phase., update Connectors screen image, add textIndent block support dev note, remove mention of playlist block, add mention of margin-free styles default.

Edit 5/18/26 Remove Notes section, insert new Gallery block slideshow image

Edit: 5/25/26 Add โ€˜Accessibility Improvementsโ€™ and โ€˜Removing title attributesโ€™ dev notesdev note Each important change in WordPress Core is documented in a developers note, (usually called dev note). Good dev notes generally include a description of the change, the decision that led to this change, and a description of how developers are supposed to work with that change. Dev notes are published on Make/Core blog during the beta phase of WordPress release cycle. Publishing dev notes is particularly important when plugin/theme authors and WordPress developers need to be aware of those changes.In general, all dev notes are compiled into a Field Guide at the beginning of the release candidate phase. (published after the field guideField guide The field guide is a type of blogpost published on Make/Core during the release candidate phase of the WordPress release cycle. The field guide generally lists all the dev notes published during the beta cycle. This guide is linked in the about page of the corresponding version of WordPress, in the release post and in the HelpHub version page.).

#7-0, #field-guide