The WordPress coreCoreCore is the set of software required to run WordPress. The Core Development Team builds WordPress. development team builds WordPress! Follow this site forย general updates, status reports, and the occasional code debate. Thereโs lots of ways to contribute:
Found a bugbugA 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.?Create a ticket in the bug tracker.
โWhatโs new in GutenbergGutenbergThe 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.
It brings practical refinements for your editing workflow. You can now add custom CSSCSSCascading Style Sheets. to individual blocks, and the Image blockBlockBlock 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. shows aspect ratio controls for wide and full alignments. List View gets more useful with full block titles and actual content displayed for list items. The release also stabilizes viewport-based block visibility and pattern editing, plus adds focal point controls for fixed Cover backgrounds and text column support for Paragraphs.
Table of contents
Custom CSS Support for Individual Blocks
Gutenberg 22.5 brings custom CSS support for individual block instances, letting you write styles that target specific blocks without affecting others of the same type. A has-custom-css class is automatically added in both the editor and frontend for dynamic blocks, making your custom styles easier to manage. If youโve been working around this limitation with extra wrapper blocks or global CSS, your workflow just got simpler. (73959, 74969)
Image Block: Aspect Ratio Control for Wide and Full Alignment
The Image block now shows aspect ratio controls when you choose wide or full alignment. Previously, aspect ratio options only appeared for default-aligned images, a limitation when designing hero sections or full-width layouts. Now you can lock in your preferred proportions regardless of alignment, giving you more consistent control over how images display across different screen sizes (74519)
List View Improvements
Two enhancements make List View considerably more useful in this release. Youโll now see full block titles instead of truncated labels, and List Items display their actual content rather than generic โList Itemโ text. When youโre navigating complex documents with nested lists, these small changes make a real differenceโyou can finally tell your list items apart at a glance (74798, 74794)
Other Notable Highlights
Cover Block: Focal point picker for fixed backgrounds: You can now set a focal point even when using fixed/parallax backgrounds (74600).
Paragraph Block: Text column support: Paragraphs can now flow into multiple columns directly via block supports (74656).
Navigation: Submenus always open option: A new toggle lets you keep submenus permanently expanded rather than requiring hover/click (74653).
In-editor revisionsRevisionsThe 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. (initial implementation: Early groundwork for viewing revisions directly in the editor, though without โdiffingโ yet (74771).
Changelog
Enhancements
Block Library
Add custom CSS support for individual block instances. (73959)
Add theย has-custom-cssย class name to the editor and dynamic blocks. (74969)
Allow for themes to define the overlay attribute without using a theme slug. (74119)
Image block: Show aspect ratio control for wide and full alignment. (74519)
List Item: Show content instead of block name in List View. (74794)
Navigation Overlay:
Add sidebarSidebarA 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. preview. (74780)
Add a new option that toggles submenus always open. (74653)
Donโt use a nav tagtagA directory in Subversion. WordPress uses tags to store a single snapshot of a version (3.6, 3.6.1, etc.), the common convention of tags in version control systems. (Not to be confused with post tags.) for navigation blocks inside overlays. (74764)
Real-time collaboration: Add default HTTPHTTPHTTP is an acronym for Hyper Text Transfer Protocol. HTTP is the underlying protocol used by the World Wide Web and this protocol defines how messages are formatted and transmitted, and what actions Web servers and browsers should take in response to various commands. polling sync provider. (74564)
Real-time collaboration: Use relative positions in undo stack. (74878)
Bug Fixes
Core backportbackportA 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. for gutenberg_filter_global_styles_post: Protect from KSES mangling. (74731)
DataForm: Sync ReactReactReact is a JavaScript library that makes it easy to reason about, construct, and maintain stateless and stateful user interfaces. https://reactjs.org/.-level validation to native inputs on date fields. (74994)
DataViews: Use regular casing for bulk selection count. (74573)
Fix typo in comment for value change check. (74730)
ShortcodeShortcodeA 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.: Fix non-string attribute values being silently dropped. (74949)
Cover Block: Show current embed URLURLA specific web address of a website or web page on the Internet, such as a websiteโs URL www.wordpress.org in dialog. (74885)
Embed: Fix Flickr double-padding with responsive wrapper. (73902)
Fix : Image caption blur in Gallery block. (74063)
Fix: Add border-box sizing for verse block. (74722)
Inspector tabs: Reset tab selection if the selected tab is no longer present. (74682)
Make custom navigation overlay full width. (74559)
Media & Text: Revert โFixed Media & Text Block โ Image not rendered properly on frontend when inside stack (#68610)โ. (74715)
Pattern Editing: Update template part to use tabs. (74793)
Post ExcerptExcerptAn excerpt is the description of the blog post or page that will by default show on the blog archive page, in search results (SERPs), and on social media. With an SEO plugin, the excerpt may also be in that pluginโs metabox. Block: Fix excerpt trimming logic to handle whitespace correctly. (74925)
Post Excerpt Block: Fix length limits for both Editor and Front and fix ellipsis consistency. (74140)
Show submenu colors but remove the word overlay. (74818)
fix: Video block: video URLs pasted without โhttps://โ show broken media. (74964)
Block Editor
Allow grid layout to use theme blockGap values for columns calculation. (74725)
Block Editor Provider: Fix editor error for contributor role when client-side media experiment is active. (74680)
Direct drag: Fix glitching around scrolling. (74608)
Ensure grid column never exceeds parentโs width. (74795)
Fix missing onClose prop for InserterMenu. (74920)
Fix: Fit Text not working on calculated line heights. (74860)
Fix: Safari โEdit as HTMLHTMLHyperText Markup Language. The semantic scripting language primarily used for outputting content in web browsers.โ for Fit Text deletes content. (74864)
Fix: Stretchy text issue when nested on flex containers. (73652)
List View: Ensure element exists in document before focusing. (74613)
Pattern Editing: Prevent double-click editing for template parts and synced patterns. (74755)
Calculate viewport based on iframeiframeiFrame 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. size in resizable editor. (75156)
Collaboration
Real-time collaboration: Do not wrap persisted doc applied update in transaction. (74753)
Sync: Refactor ProviderCreator signature to an object. (74871)
Interactivity APIAPIAn 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.
iAPI Router: Fix initial router regions withย attachToย being duplicated afterย navigate(). (74857)
iAPI Router: Prevent router regions withย data-wp-keyย from being recreated on navigation. (74750)
iAPI: Fix and refactor runtime initialization logic. (71123)
DataViews
Fix actions visibility on smaller viewpoints and for lone action with isPrimary as true. (74836)
Fix insert left and right handling in table layout for RTL languages. (74681)
Fix: Escape less-than character in HTML attributes to prevent block recovery errors. (74732)
Patterns
Restore pattern categoryCategoryThe 'category' taxonomy lets you group posts / content together that share a common bond. Categories are pre-defined and broad ranging. actions for user patterns. (74927)
Update performance results endpoint to codevitals.run. (74802)
Use fetch API for performance results logging. (74803)
Experiments
Route: Add notFound to public API and add route validation. (74867)
Media
Media Modal Experiment: Add a simple notices-based uploading state. (74965)
Collaboration
Real-time Collaboration: Add user and selection information to awareness. (74728)
Post Editor
Media Editor: Add a simple media editor package and integrate into the editor package. (74601)
Block Library
Donโt show overlay settings for navigation blocks that are inside othโฆ. (74408)
Documentation
Added Missing Global Documentation class-wp-rest-block-editor-settings-controller file. (74973)
Added Missing Global Documentation extensibleExtensibleThis is the ability to add additional functionality to the code. Plugins extend the WordPress core software.-site-editor file. (74868)
Badge: Use stories for โChoosing intentโ doc. (74675)
DataViews: Update storybook to add more context. (74819)
Docs: Add missingย @returnย tags to experimental functions. (74960)
Docs: Standardize use ofย @linkย tag for URL references in lib directory. (74984)
Update wp-build documentation to describe โwpPlugin.nameโ. (74741)
Updated Typo in Rest APIREST APIThe 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/. File. (74718)
iAPI Docs: Add configuration to state/context guide. (71355)
iAPI: Donโt use deprecatedย data-wp-on-asyncย in documentation. (72591)
iAPI: Update deprecation warning for unique ID format. (74580)
Move grid manual mode sync into 7.1 folder. (74792)
Update: Preserve additional metaMetaMeta 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. properties on client side abilities. (73918)
Comments Title: Copy deprecate from block.jsonJSONJSON, or JavaScript Object Notation, is a minimal, readable format for structuring data. It is used primarily to transmit data between a server and web application, as an alternative to XML. to deprecated.js to avoid legacy attribute usage. (74924)
Addย displayNameย to the anonymous components. (74716)
SlotFill: Unify registry and fill implementation. (68056)
Block Editor
Block Visibility: Fix failing unit testunit testCode 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.. (74840)
Post Editor
Blocks: Always trigger borwser console warnings for blocks with apiVersion below 2. (74057)
e2e: Fix flaky tests for settings sidebar. (74929)
end-to-end tests: Bump all test blocks to API v3. (74941)
end-to-end tests: Removeย switchToLegacyCanvasย from multi select and a11yAccessibilityAccessibility (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) suite. (74845)
end-to-end tests: Remove switchToLegacyCanvas from inserter drag and drop tests. (74892)
eslint-pluginPluginA 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: Add โneverโ option for dependency-group rule. (74990)
selectBlock: Fall back to next block if no previous block is present. (74938)
Build Tooling
Build script: Increase memory limit for storybook build process. (74933)
Build: Deduplicate and minify embedded styles. (74651)
Icons: Add a manifest containing icons metadata. (74943)
The live meeting will focus on the discussion for upcoming releases, and have an open floor section.
The various curated agenda sections below refer to additional items. If you haveย ticketticketCreated for both bug reports and feature development on the bug tracker.ย requests for help, please continue to post details in the comments section at the end of this agenda or bring them up during the dev chat.
Announcements ๐ข
Nominations for CoreCoreCore is the set of software required to run WordPress. The Core Development Team builds WordPress. Team Reps 2026
The nomination process for Core Team Representatives for 2026 is over. The current Team Reps are putting together the nominations, then a poll will be opened forย voting. It will stay open for two weeks.
The discussion section of the agenda is for discussing important topics affecting the upcoming release or larger initiatives that impact the Core Team. To nominate a topic for discussion, please leave a comment on this agenda with a summary of the topic, any relevant links that will help people get context for the discussion, and what kind of feedback you are looking for from others participating in the discussion.
Iโd like to mention I have posted a detailed progress update for the Client Side Media feature on the tracking issue. The summary is: last week we landed the wordpress/worker-threads package, which unlocks running VIPS directly in a worker thread. This means the feature can now be tested. Also: the final 7 pre-betaBetaA 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. PRs are nearly ready for review.
The main thing I need support on is code reviews and testing!
The meetings are currently at a difficult time for me to attend, iโm happy to answer questions a bit later if i am not able to join.
Any topic can be raised for discussion in the comments, as well as requests for assistance on tickets. Tickets in the milestone for the next major or maintenance release will be prioritized.
Please include details of tickets / PRs and the links in the comments, and indicate whether you intend to be available during the meeting for discussion or will be async.
This proposes merging the WP AI Client into WordPress CoreCoreCore is the set of software required to run WordPress. The Core Development Team builds WordPress. for WordPress 7.0.
WP AI Client is developer infrastructure: a provider-agnostic APIAPIAn 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. for WordPress code to call generative AI models via a consistent interface, with WordPress integrations for HTTPHTTPHTTP is an acronym for Hyper Text Transfer Protocol. HTTP is the underlying protocol used by the World Wide Web and this protocol defines how messages are formatted and transmitted, and what actions Web servers and browsers should take in response to various commands. transport, event handling, caching, credentials, and a browser-friendly REST/JSJSJavaScript, a web scripting language typically executed in the browser. Often used for advanced user interfaces and behaviors. layer.
Providing this foundation, in collaboration with the Abilities API that is already part of Core, will make WordPress ready for AI, both as a consumer and as a tool.
This merge does not ship any AI providers or automatically enable AI calls. Without explicit configuration and explicit calling code, WordPress will not send prompts or data to any external service. Site owners will be able to install plugins to enable usage of specific AI providers, built on top of this foundation.
Purpose & Goals
Goals
Provide a stable, provider-agnostic AI client foundation in Core, with seamless integration with the Abilities API
Reduce duplicated SDKs/settings pages by centralizing common infrastructure (transport, auth storage, prompt invocation, access controls).
Enable plugins to detect availability and gracefully disable AI features when no model is configured.
Non-goals
No bundled credentials or providers.
No end-user โAI assistantโ UIUIUser interface in core.
No product-level experiences standardized in this merge (those remain pluginPluginA 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/ecosystem territory for now, e.g. AI Experiments plugin).
Proposed Scope
PHPPHPThe web scripting language in which WordPress is primarily architected. WordPress requires PHP 7.4 or higher API + Prompt Builder โ A WordPress-friendly API to construct prompts and invoke model capabilitiescapabilityAย 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).. The underlying PHP AI Client will be bundled as an external library, while the WordPress specific wrapper code will become a direct part of Core.
Provider/model abstraction โ A consistent interface so hosts/site owners can choose providers via plugins, and plugins that use AI can remain vendor-neutral.
Discoverability โ Plugins can dynamically enable AI features, based on detecting whether any configured model on the site is able to respond to the relevant prompt(s).
WordPress HTTP integration โ Transport aligned with WP HTTP conventions and WP_Error behavior.
Credentials management in wp-adminadmin(and super admin) โ Admin UI/storage for provider credentials, used across plugins.
REST endpoints + JavaScriptJavaScriptJavaScript 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/. API โ A REST-backed JS API for browser contexts (wp-admin/editor use cases).
Simple control mechanism for prompt execution โ A filterFilterFilters 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. allows allowing or disallowing certain prompts or prompt configurations, or even AI use in general.
Security, Privacy, Performance
Security: REST/JS execution must remain capabilitycapabilityAย 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).-gated; secrets must not leak via REST/script data/logging.
Privacy: no outbound AI calls by default; calls only happen via explicit configuration + explicit invocation.
Performance: minimal footprint when unused; admin-only work should avoid affecting typical frontend requests.
Call for Feedback and Testing
Feedback is welcome via comments on this proposal or on the Trac ticket which has been opened for this change.
In particular, feedback is needed for:
Is the REST/JS surface area and capability model appropriate for long-term support?
Any missing core requirements for transport, errors, or credential storage?
As of now, there is no pull request yet. Please follow the Trac ticket to be notified when a pull request has been opened. Here are the steps you will need to follow for testing:
Apply the core PR (install a test build or utilize the WordPress Playground instance from the PR) and confirm the admin credentials UI is access-limited.
Configure a provider (or install/register a provider integration as needed).