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.
This version extends visual 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. to include the post title, gives the Gallery 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. a grid layout with per-breakpoint controls, and lets a site title scale to the width it is given.
Visual revisions now cover the post title
Visual revisions have been growing over the last few releases, and until now the post title sat outside them. In 24.0, the title participates like any other piece of content, including displaying change diffs directly in the post title (#82536, #82586).
Seeing it in the same view as body changes removes the need to guess when a rename happened.
A more adaptable Gallery block
The Gallery block gains a Grid variation that can be switched on from the block inspector, replacing the default non-editable flex layout with a fully customizable grid (#81909).
“Column count” and “Crop images to fit” can now also be set per breakpoint through viewport states. A gallery can show four columns on a wide screen and two on a tablet without any custom CSSCSSCascading Style Sheets. (#82003).
Site titles that fill their available space
The Site Title block now supports fit-text (#82074). Toggle it on from the ellipsis menu in the typography panel and the title scales to the full width available to it, rather than being sized in points and left to wrap or fall short.
Other notable highlights
A redrawn icon set. Nearly 100 icons have been redrawn from a mix of filled and outlined shapes into a single, consistently stroke-based visual language (78812, 78808, 82338).
Tab indents lists. In the List block, Tab and Shift+Tab now indent and outdent a fully selected list item, and work across a multi-item selection instead of only at the caret (82460, 82411).
Background images from a URLURLA specific web address of a website or web page on the Internet, such as a website’s URL www.wordpress.org. Background image support can now accept an image URL, rather than requiring an entry in the Media Library (82230).
Non-breaking spaces are visible. The format library now visualizes non-breaking spaces, so a character that silently changes wrapping is no longer invisible while editing (74040).
Changelog
Enhancements
Components
Add defaultShown, onShownChange to ToolsPanelItem. (78010)
Border Box Control: Try moving the unlink button to the label row, and rename the panel to Borders. (82163)
DataForm: Add a showPlaceholderIfEmpty option to the panel layout. (82527)
DataForm: Communicate the timezone in the datetime control. (82291)
Editor: Migrate post-card-panel Badge to UI Badge. (82500)
Global Styles UI: Migrate revisions Active Badge to UI Badge. (82560)
Icons: Redraw 35 prominent icons with consistent stroke widths. (78808)
Icons: Redraw 64 icons to be stroke-based. (78812)
Menu: Stabilize portaled 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.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.. (82092)
Menu: Use Text for item labels and descriptions. (82237)
SearchableSelect: Add form primitive to wordpress/ui. (80961)
Storybook: Persist 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. theme in URL. (82111)
Support isAny and isNonefilterFilterFilters 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. operators for numeric fields. (77942)
Tab Panel: Show focus with outline instead of legacy box-shadow ring. (82421)
Validated form controls: Use design token for invalidinvalidA resolution on the bug tracker (and generally common in software development, sometimes also notabug) that indicates the ticket is not a bug, is a support request, or is generally invalid. focus rings. (82410)
List: Indent and outdent a fully selected list item with Tab. (82460)
List: Indent and outdent multi-selected items with Tab. (82411)
Query LoopLoopThe Loop is PHP code used by WordPress to display posts. Using The Loop, WordPress processes each post to be displayed on the current page, and formats it according to how it matches specified criteria within The Loop tags. Any HTML or PHP code in the Loop will be processed on each post. https://codex.wordpress.org/The_Loop: Rename the “Keyword” filter to “Search terms” and add help text. (82387)
Query: Replace the “Reload full page enabled” modal with a snackbar notice. (82246)
feat: Introduce ‘Add Media’ in the block controls for media-text block. (82420)
Post Editor
Autocompleters: Consider email address context in user mention. (47249)
CSS Styling: Represent focus with outline for list view component. (82129)
DataViews: Append an ellipsis to action labels that open a dialog. (81994)
Editor: Refactor the Options menu to use the Menu component. (81564)
Editor: Refactor the View menu to use the Menu component. (82321)
Editor: Render change diffs in the post title in revisions. (82586)
Editor: Show revision data in Post Title component. (82536)
Media: Attach unattached media to the current post on save/publish. (81977)
Menu: Align selection indicators and prefix icons with item labels. (82346)
Post slug: Prefer server sanitization in the editor. (78135)
Try: Add “reading settings” link to Front Page template. (81987)
Site Editor
Add New Template: Show the design system focus ring instead of legacy box-shadow rings. (82164)
Add a root error boundary to prevent a blank screen. (82486)
Site editor v2: Identity takes its form from the view configuration endpoint. (82692)
Site editor v2: Navigation takes view configuration from endpoint. (82138)
Site editor v2: Pages take view configuration from endpoint. (82140)
Site editor v2: Patterns take view configuration from endpoint. (82458)
Site editor v2: Template parts take view configuration from endpoint. (82457)
Site editor v2: Templates take view configuration from endpoint. (82456)
Site editor v2: Use the canonical template fields in the templates list. (82666)
Site editor v2: Use the canonical wp_block fields in the patterns list. (82672)
Block Editor
Background image: Support setting the image from a URL. (82230)
BlockPreview: Assert preview contents are inert. (82682)
Format library: Visualise non-breaking spaces. (74040)
List View: Disable block icon colors while the block is selected. (82498)
Show the block outline where the grab cursor shows. (81798)
Tab trap escape hatch: Leave/enter the canvas with Escape/Enter. (82314)
Dashboard
Site Health widgetWidgetA 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.: Route the body’s review link through the host. (82066)
Widget Dashboard: Add a Policy provider to govern what users may do. (81967)
Widget Dashboard: Enforce the policy on the staging layer for every instance operation. (82256)
Widget Dashboard: Govern Reset to default through the policy. (82255)
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. fetch
Add unregister to remove a registered middleware. (82408)
Expose defaultFetchHandler so overrides can restore it. (82553)
api-fetch: Resolve to null for a 200 response with an empty body. (79325)
Accordion Panel: Reset padding-block when panel is hidden. (81782)
Fix categories block handling of invalid taxonomyTaxonomyA 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.. (82153)
Fix: Footnote IDs can start with a digit and break CSS selectors. (82398)
Fix: Tabs block: Anchor links in tab panels are not functional. (81744)
Gallery block: Fix ‘Crop images to fit’ broken in editor. (82318)
Gallery: Shorten “Use images attached to the post” button, add description. (82617)
Image block cropping: Sync image size and link destination settings. (82316)
List: Merge into the previous line on Backspace instead of outdenting. (82145)
List: Outdent an empty middle item without adding an item. (82011)
Navigation: Restore flex-grow on container when accessible label is present. (78447)
Query Loop: Fall back to post when the query has no postType. (82465)
Query: Don’t write excludeCurrent into blocks that never had it. (82147)
Block Editor
Columns: Fix appender drop zone visibility when dragging into empty column. (77852)
DOM: Exclude visibility-hidden elements from focusable results. (82574)
Fix auto-capitalization after Enter on iOSiOSThe operating system used on iPhones and iPads. Safari. (82475)
Fix editor link colour cascade order for nested blocks. (77833)
Fix: Responsive horizontal orientation does not override a vertical layout. (82364)
Fix: Retain focus and caret position after Backspace undo of a prefix block transform. (82116)
List View: Don’t focus the last Table cell on keyboard activation. (81964)
Rich text: Restore contenteditable on pointercancel. (82598)
Writing Flow: Bail out of Enter handling when no block is selected. (82424)
Post Editor
Editor: Deprecate the as prop of the 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. menu item components. (82319)
Editor: Derive post-only block list layout from the assigned template. (82599)
Editor: Store the finalize response as the attachment record. (81947)
Fields: Hide the slug field for posts without a permalink. (82341)
Media: Refuse a multi-file drop on a placeholder that takes one file. (82046)
Media: Stop claiming “Upload complete” when every upload failed. (81397)
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. Boxes: Move meta box markup with moveBefore to keep classic editors alive. (82243)
Post URL: Translate the copy permalink button label. (82642)
wp-build
Build Package: Restore CoreCoreCore is the set of software required to run WordPress. The Core Development Team builds WordPress. Boot layout compatibility. (82112)
Build: Fix regular CSS injection in Vitest Browser Mode. (82154)
Pages: Require authentication and a 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). to render generated standalone pages. (82254)
Data Layer
Core Data: Return a stable record for equivalent _fields queries. (82552)
Core Data: Scope revisionId to the entity it is provided for. (82517)
Media: Only blame the browser’s codecs when HEIC really cannot be decoded. (82265)
Media: Report server upload failures in plain language. (81735)
Site Editor
Boot, Site Editor: Seed content surfaces with default background color. (81646)
Fields: Remove unused custom sort from the author fields. (82559)
Global Styles
Global styles engine: Return a copy from getResolvedValue instead of mutating. (82278)
Resolve theme-relative background image URLs for display. (82242)
Env
wp-env: Fix Docker build errors with Debian Bullseye repositories. (82478)
Layout
Fix: Restore layout styles for block style variations. (82335)
Format library
Fix Edit as HTMLHTMLHyperText Markup Language. The semantic scripting language primarily used for outputting content in web browsers. crash with background-only highlight. (82215)
Views
useViewConfig: Don’t request the view configuration twice. (82141)
Dashboard
Widget Dashboard: Keep the plain anchor for an empty-string download. (82073)
Font Library
Keep CSS custom properties unquoted in font previews. (82010)
Fields
Fix pattern export filenames by normalizing special characters. (77033)
AccessibilityAccessibilityAccessibility (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)
Workflow: Replace cmdk with the wordpress/ui Autocomplete primitive. (82504)
Components
Match the wordpress/ui disabled styles in form controls. (82454)
Tests: Skip pull requests that only change Storybook stories. (82459)
Themes
Theme 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.: Avoid rebuilding identical block schemas during sanitization. (82203)
Block Supports: Bail early in state styles when a block has no style attribute. (81908)
Block Editor
Rich text: Resolve owned event listeners once instead of per subscriber. (80605)
Experiments
Editor assets endpoint: Prime the theme JSON resolver before capturing. (82134)
Post Editor
ExtensibleExtensibleThis is the ability to add additional functionality to the code. Plugins extend the WordPress core software. site editor: Add a revisions entry point to the Styles route. (82142)
Media Modal Experiment: Allow filtering by attached to the post, or unattached. (81974)
Block Fields Media: Handle ‘audio’ in chooseItemLabel. (82389)
Site Editor
Extensible site editor: Fall back to the raw title in edit route document titles. (82143)
Navigation Menus
Extensible Site Editor: Let menu items be added from the navigation screen. (82125)
Documentation
API Fetch: Rename defaultFetchHandler parameter to options. (82588)
Add recommended bulk suppressions configuration for ESLint VSCode. (82303)
Components: Add an Emotion-to-SCSS migrationMigrationMoving the code, database and media files for a website site from one server to another. Most typically done when changing hosting companies. skill and guide. (82567)
CI: Pin npm version in the private API check job. (82222)
CodeRabbit: Disable the review status comment. (82534)
CodeRabbit: Only review on request, keep PR descriptions untouched. (82448)
Docs: Align param 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.) columns in lib/ docblocks. (81902)
Docs: Align param tag columns in phpunit/ docblocks. (81904)
Docs: Remove the blank line between param and return in test docblocks. (81907)
Packages: Exclude src from block-serialization-default-parser package. (77307)
Performance tests: Reuse the plugin an earlier trunktrunkA 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. run already built. (82223)
Replace npm-run-all with native npm script chaining. (82166)
Reusable Blocks: Remove leftover merge conflictconflictA conflict occurs when a patch changes code that was modified after the patch was created. These patches are considered stale, and will require a refresh of the changes before it can be applied, or the conflicts will need to be resolved. markers from the changelog. (82126)
list-reusable-blocks: Exclude src from published files. (77305)
CSS Styling: Cleanup focus outline override for grid component. (82337)
Migrate __experimentalText and __experimentalHeading to wordpress/ui Text in Inspector Popover HeaderHeaderThe 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.. (77449)
Migrate __experimentalText to wordpress/ui Text in Allowed Blocks Modal. (78119)
Migrate __experimentalText to wordpress/ui Text in Block switcher bindings hint. (77366)
Migrate __experimentalText to wordpress/ui Text in Pattern Overrides Dropdown. (77492)
Span the writing flow focus capture elements over the canvas. (82354)
TypeScript: Migrate format-library package to TS. (79486)
Post Editor
Block Editor: Remove the dead Write/Design editor tool plumbing. (82677)
Editor: Apply the showListViewByDefault preference in the shared editor. (82119)
Editor: Fix disabled and link items of the more menu adapter. (82428)
Editor: Mark __unstableSaveForPreview options as optional. (81858)
Remove the content-only inspector fields (block fields) experiment. (82531)
Data Layer
Core Data: Convert hooksHooksIn 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. tests to renderHook and drop JSX. (82276)
Remove the template activation experiment. (82241)
Validate tsconfig references against declared dependencies. (82106)
feat: Improve TypeScript definitions in the getEntityRecord function. (81863)
Fields
Declare the caption, alt text, description and pingPingThe act of sending a very small amount of data to an end point. Ping is used in computer science to illicit a response from a target server to test it’s connection. Ping is also a term used by Slack users to @ someone or send them a direct message (DM). Users might say something along the lines of “Ping me when the meeting starts.” status controls through the Field API. (82539)
Remove unused CSS rule from slug field control. (77961)
Widgets Editor
Edit Widgets: Guard canInsertBlockInWidgetArea against an empty block list. (82107)
Widgets: Replace {TODO} placeholder with PR number in changelog entries. (82450)
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/
Templates REST API: Prevent fatal error when a null template reaches prepare_item_for_response. (82374)
View Config: Move the table column style descriptions to the 7.2 compat layer. (82372)
Create Block
Test package at supported Node.js versions. (82657)
Site Editor
View config: Remove stale fields from the wp_template default view. (82602)
Make BlockTransform a discriminated union over its type. (81831)
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)
Packages: Exclude src from autop published package. (77283)
Tools
Point to docmumentation about release assets. (82250)
Project Management: Add validation for missing GitHubGitHubGitHub 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/ labels configuration. (76263)
Project Management: Remove empty entries from CODEOWNERS. (82292)
Project Management: Restore CODEOWNERS exclusions for suppression lists. (82538)
Project Management: Update CODEOWNERS to reflect current participation. (82262)
Add more end-to-end tests for the editor inspector consolidation experiment. (82239)
Add more end-to-end tests for the editor inspector consolidation experiment. (82327)
Add promptfoo for testing agent development setup and skills. (80812)
Add the template end-to-end tests for the editor inspector consolidation experiment. (82394)
Automated Testing: Enforce .tsx for all new ReactReactReact is a JavaScript library that makes it easy to reason about, construct, and maintain stateless and stateful user interfaces.
https://reactjs.org files. (80123)
Automated Testing: Fix failing categories test on trunk. (82182)
Automated Testing: Fix unit test compatibility with Node.js v26. (82618)
CI: Add “Required changes from trunk” PR check. (82272)
CI: Add a per-workflow status check job and filter paths. (81015)
CI: Unify the automation comments into a single PR comment. (82249)
DataViews: Remove obsolete Node 20 timezone test gate. (82644)
DateTime tests: Freeze the clock in the empty-value calendar test. (82282)
e2e-test-utils-playwright: Update Lighthouse and web-vitals. (81916)
E2E: Run the site editor suite against the extensible site editor too. (82117)
Fix privacy policy page setting unit test on multisitemultisiteUsed 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. (82467)
Test: Drop the jest-dom Vitest entry point from test files. (82606)
Test: Enforce 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 test runner ownership. (82299)
Bundled packages: Add a check for transitive private API usage. (82027)
CI: Collapse package CHANGELOG check exclusions into a single grep pattern. (82121)
CI: Read the required npm version from a single source. (82235)
Change stray ubuntu-latest to ubuntu-24.04. (82156)
Fix the high-severityseverityThe seriousness of the ticket in the eyes of the reporter. Generally, severity is a judgment of how bad a bug is, while priority is its relationship to other bugs. sharp audit failure in AI development tests. (82627)
Framework: Error on npm versions older than the required floor. (82320)
You must be logged in to post a comment.