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 of Gutenberg brings some big quality-of-life editing improvements around 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. insertion and custom styling.
Stop searching for the inserter
Finding the inserter was challenging on some block selections. Now, you can insert from the block toolbar. Easily add a new block to a group or another image to your gallery without having to change selection or scroll to find the inserter. Be on the lookout for more improvements to the block inserter in upcoming releases.
Easily find custom style overrides
Global Styles now makes it easy to see which blocks have custom overrides applied to them. Rather than drilling through each block to find which ones have custom styles, a dot indicator is on each block with a custom style. If you want to see all of the customized blocks together, there’s an option to 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. only by blocks with custom styles.
Other Notable Highlights
Axial block gap for the group block. Flex and grid layouts can now have independent vertical and horizontal block gap spacing so you can dial in your design. (81476)
Global Styles for more elements: Citations, Inputs, and Selects were all available in theme.json, but now you can use Global Styles to easily customize them. (80852)
Add custom Duotone colors to Global Styles.theme.json could provide duotone palettes, but you couldn’t add custom ones via Global Styles. Now, if you don’t like the theme’s provided duotones, add your own via the new Duotone tab in the Global Styles Colors section. (81605)
Changelog
Enhancements
Components
Adminadmin(and super admin)UIUIUser interface: Add Navigation component and Page navigation slot. (79746)
Align legacy form control focus rings with WPDS. (80417)
Base Styles: Align input-control mixin to design system. (81357)
Base styles: Streamline focus ring override. (81242)
CollapsibleCard: Support multiple 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. descriptions. (81227)
DataViews: Pass the WordPress localeLocaleA locale is a combination of language and regional dialect. Usually locales correspond to countries, as is the case with Portuguese (Portugal) and Portuguese (Brazil). Other examples of locales include Canadian English and U.S. English. to the date/datetime calendar controls. (81592)
Global Styles: Allow editing duotone palettes. (81605)
More block: Clarify description about 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. vs full content. (80619)
Playlist Track: Show upload spinner inline. (81445)
Command Palette: Allow commands to override the categoryCategoryThe 'category' taxonomy lets you group posts / content together that share a common bond. Categories are pre-defined and broad ranging. icon. (81787)
Editor: Defer hierarchical term filtering and soften announcements. (81422)
Editor: Migrate hierarchical term selector to @wordpress/ui. (81848)
Editor: Refactor ‘ErrorBoundary’ to use the new recommended components. (81638)
Editor: Simplify List View 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. shortcut handling. (81693)
Editor: Surface debugging details in the ErrorBoundary. (81642)
Editor: Use PluginSidebar in GlobalStylesSidebar. (81570)
Pre-publish panel: Remove the headings that repeat the panel title. (81806)
Global Styles: Expose additional elements in Typography and Colors. (80852)
Patterns explorer: Refactor the category sidebar to use Tabs. (81807)
Quick Inserter: Standardize the design of the Browse all button. (81827)
Writing flow: Select next block on Enter key. (63484)
Inbetween Inserter: Use average width of adjacent blocks for inserter size. (68074)
Dashboard
Dashboard Widgets: Let the host decide which component renders an action link. (81740)
Dashboard Widgets: Promote high-relevance actions into a chrome footer. (81556)
Dashboard Widgets: Resolve 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. types without a metadata module. (81738)
DataViews: Sync the displayed calendar month with external value changes. (81635)
Duotone Picker: Stop the duotone bar offering to move its control points. (81850)
Fix Storybook 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) issues in stories. (81777)
Improve text detection for button icon-with-text. (81521)
InputControl: Vertically center date and time input values in Safari. (81361)
Menu: Close non-modal menus 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. interaction. (81952)
Modal: Stop Escape key propagation on dismiss. (81785)
PaletteEdit: Expose palette swatches as command buttons. (82023)
Storybook: Handle production module load failures. (81867)
Theme: Improve color ramp contrast safeguards. (81185)
UI: Fix accessibility issues in form primitives and their stories. (81853)
Block Library
Accordion Heading: Route 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. spacing to the toggle button. (81976)
Dynamic Gallery block: Skip transforms that expect inner blocks, e.g. Image and Grid transforms. (82009)
Enable blockGap spacing supports in 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 block. (79689)
Fix: Accordion: Anchored hash inside the accordion throws the malformed URLURLA specific web address of a website or web page on the Internet, such as a website’s URL www.wordpress.org console error. (81780)
Fix: Skip empty block markup in navigation to prevent split UL elements. (78793)
Icon: Fix margin being applied twice in the editor. (81292)
Inner Blocks: Fix 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. that caused alignment controls to show in Image blocks within a Gallery. (81606)
Post Template: Fix mover arrows and labels for blocks inside the grid view. (81120)
Preserve layout and style attributes on Column transform. (81855)
Rename the media editor toolbar button to ‘Edit image’. (81705)
Post Editor
Add context to change “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. code diff”. (81820)
Editor: Correctly mark ToolsMoreMenuGroup as a private SlotFill. (81503)
Clamp the truncated file name slice in filterURLForDisplay. (81529)
Fix: getQueryArgs discards everything after the second = in a query argument value. (81066)
Fix: URL: normalizePath drops the rest of the query after a second “?”. (81612)
Stop normalizePath throwing on a malformed percent sequence. (81086)
Data Layer
CoreCoreCore is the set of software required to run WordPress. The Core Development Team builds WordPress. Data: Stop storing NaN pagination totals for unpaginated endpoints. (82059)
Core Data: Validate the parsed-blocks cache against registered block types. (81809)
Env
Fall back to cached docker images when the registry is unreachable. (81631)
Update git to latest commit when --update passed. (81447)
Build Package: Use Core’s boot module when a 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. has none. (81761)
Font Library
Fix the preview weight for variable fonts. (81748)
Media
Fix clipped focus outlines in the media editor Details sidebar. (81703)
Site Editor
Use inverted ThemeProvider seed for portaled UI. (81653)
DOM
Treat a caret at a soft line wrap as an ambiguous position in Firefox. (81003)
Media Utils
Prevent white screen crash during undo operations when Media Modal is open. (79898)
Parsing
Fix: Line Break Tags Added to Scripts and Styles. (77542)
Paste
Fix: Stop stripping spaces inside inline HTMLHTMLHyperText Markup Language. The semantic scripting language primarily used for outputting content in web browsers. elements on paste. (76696)
Accessibility
Post Editor
Editor: Announce publish date changes to screen readers. (81629)
Boot: Preview the site where the canvas has nothing to open. (81749)
Boot: Sync the editor’s device preview with the URL. (81617)
Boot: Translate the canvas click-to-edit label. (81620)
Boot: Warn before leaving with unsaved changes. (81625)
Edit Site Init: Seed the editor preferences the editor expects. (81628)
ExtensibleExtensibleThis is the ability to add additional functionality to the code. Plugins extend the WordPress core software. Site Editor: Add a theme preview page with global styles editing. (81954)
Extensible Site Editor: Add the Identity route. (81576)
Extensible Site Editor: Preview the site on Home for classic themes. (81578)
Extensible Site Editor: Show only the style book on Styles for classic themes. (81579)
Extensible Site Editor: Gate theme screens on theme support. (81581)
Lazy Editor: Keep the theme’s editor styles on the canvas. (81747)
Lazy Editor: Render the editor preferences modal. (81630)
Docs: Fix broken link to the Document-Isolation-Policy explainer. (81790)
Docs: Fix broken link to the getEntityRecords selector reference. (81791)
Docs: Fix broken links to the Block 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. reference guides. (81571)
Docs: Fix broken skip ahead anchor on the custom block editor guide. (81835)
Docs: Fix dead link in the dynamic blocks tutorial. (81399)
Docs: Narrow the tsconfig split guidance to the standard layout. (81828)
Docs: Require site editor features to land in the extensible site editor too. (81752)
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 test/ docblocks. (81905)
Components
BorderControl, BorderBoxControl: Migrate styles to CSS Modules. (80437)
ComboboxControl: Narrow onChange callback type to string | null. (81568)
Tabs: Number generated tab IDs from 1 and keep them sequential. (81781)
Playlist: Remove block toolbar sharing between parent and child blocks. (81432)
Update waveform player dependency patchpatchA special text file that describes changes to code, by identifying the files and lines which are added, removed, and altered. It may also be referred to as a diff. A patch can be applied to a codebase for testing.. (81454)
Post Editor
ActionItem: Move the more menu deduplication out of the Slot. (81507)
Block Editor: Never spotlight blocks in a preview. (81615)
Editor: Remove FlexItem usage from NoteCard. (81851)
Use WCInputControl alias for legacy InputControl imports. (81830)
Use WCTextareaControl alias for legacy TextareaControl imports. (81834)
Data Layer
Core Data: Allow keyless entities to be addressed without a record ID. (81857)
TypeScript: Drop redundant undefined casts for keyless entity record IDs. (82018)
refactor: Convert createColorHOC to functional component. (70408)
Dashboard
Dashboard widgets & Grid: Use kebab-case for CSS selectors. (82053)
Quick Draft widget: Drop a reference to a class that does not exist. (82064)
Media
Media Editor Route: Add missing dependency to media-editor route. (81845)
Fields
Migrate last remaining JSJSJavaScript, a web scripting language typically executed in the browser. Often used for advanced user interfaces and behaviors. file to TS. (81808)
Styles Route: Reference the api-fetch and html-entities projects. (81989)
Test: Add Vitest ReactReactReact is a JavaScript library that makes it easy to reason about, construct, and maintain stateless and stateful user interfaces.
https://reactjs.org, Emotion compilation, console, and snapshot parity. (81039)
TypeScript: Add typecheck script and split root tsconfig into build and dev solutions. (81499)
TypeScript: Put route projects under the typecheck run. (81829)
Validation: Update dependency-audit to 0.4.6 and ignore the dataviews ./wp bundle. (81928)
Testing
Automated Testing: Change Storybook default 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) test to error on failure. (81597)
Block Library: Fix failing test in playlist block. (81950)
List View: Fix flaky global shortcut test and re-enable it. (81690)
Perf: Report the first block selection as its own metric. (81616)
Test: Port shared Vitest test environment. (81038)
Tests: Make PHPUnit tests independent of test configuration flags and theme root. (79159)
Vitest: Resolve @flakiness/vitest reporter to an absolute path. (81582)
end-to-end Tests: Use str_starts_with()/str_contains() in hide-user-rest-routes plugin. (82030)
Data Layer
Update 23.8 release changes on 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.. (81485)
ESLint plugin
Remove fixable on i18n-no-flanking-whitespace. (70279)
First-time contributors
The following PRs were merged by first-time contributors:
Thanks to @mciampini and @aduth for helping with the npm package distribution and stable release, @manzoorwanijk, @onemaggie and @softglaze for release candidaterelease candidateOne 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). support and testing, @coreyhall93 for the video highlights, and @tyxla, @ramonopoly, and @ellatrix for reviewing this post.
You must be logged in to post a comment.