X-post: Proposal: 2026 Major Release Schedule

X-comment from +make.wordpress.org/project: Comment on Proposal: 2026 Major Release Schedule

Gutenberg 22.3 (December 17)

“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 tagtag A 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.)) 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.

Image

What’s New In
Gutenberg 22.3?

Gutenberg 22.3 is here and ready for download!

This release brings a dedicated Fonts page for easier typography management, responsive Grid layouts, continued progress on the Site Editor’s routing infrastructure, and improvements to the image editing experience.

Dedicated Fonts page for easier typography management

A dedicated Fonts page is now available under the Appearance menu for 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. themes. Until now, font management has lived deep inside Global Styles, requiring navigation through several panels to install or preview a font. This new standalone page lets block theme users browse, install, and manage their typography collection in one dedicated space. Support for non-block themes will come next.

Under the hood, this page is built on a new routing infrastructure for the Site Editor, designed to improve navigation and support new top-level pages in wp-adminadmin (and super admin). View transitions are now wired into this routing layer, providing early zoom/slide animations when navigating between pages.

Image editing improvements

The in-editor image cropper has been rebuilt on a new foundation. While the workflow remains familiar, you’ll notice improvements: aspect ratios and zoom levels now persist when rotating images, fixing a long-standing frustration. This refactor also lays the groundwork for future image-editing enhancements. (#72414#73277)

Responsive Grid block

The Grid block now adapts to different screen sizes when columns are set. Layouts will adjust naturally across devices, providing a more consistent experience for visitors on mobile and desktop alike.

Other highlights

A few more highlights worth mentioning:

Changelog

Enhancements

Block Editor

  • Image Cropper: Add package and basic stories. (72414)
  • Implements the image-cropper package in the editor. (73277)

Block Library

  • Add support for ‘align’ to the Breadcrumbs block. (73794)
  • Breadcrumbs: Support paged comments. (73670)
  • Button: Migrate to text-align block support. (73732)
  • Comments Pagination Numbers: Add spacing controls for margin and padding. (67267)

Components

  • Chore: Shorten timeout duration for Snackbar component. (73814)
  • Try: 32px tall menu items. (73429)

Data Layer

  • wordpress/data: Migrate index.js to index.ts. (73597)

DataViews

  • Add min/max validation support to DataForm inputs. (73465)
  • Field 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.: Display formats for number and integer types. (73644)
  • Try using 24px padding for consistency across different uses. (73334)
  • Update operator labels and deprecate the isNotAll. (73671)

Internationalization

  • Fields: Update “TrashTrash Trash in WordPress is like the Recycle Bin on your PC or Trash in your Macintosh computer. Users with the proper permission level (administrators and editors) have the ability to delete a post, page, and/or comments. When you delete the item, it is moved to the trash folder where it will remain for 30 days.translationtranslation The process (or result) of changing text, words, and display formatting to support another language. Also see localization, internationalization. to provide verb context. (73704)

Layout

  • Enable grid block to be responsive when columns are set. (73662)
  • Try removing top and left grid drag handles in stable (auto) mode. (73864)

Media

  • Add media-specific fields for use with Attachment post types and DataViews/DataForm. (73071)

Notes

  • Notes: Add email notification. (73645)

Offline

  • Editor: Improve offline error notices. (73874)

Packages

  • Remove WordPress dependencies from abilities package. (73428)

Patterns

  • Add pattern name to document toolbar when editing in spotlight. (73208)
  • ContentOnly: For template parts and synced patterns, ensure ‘Edit section’ button goes to the isolated editor. (73736)

Post Editor

  • Use relevance pattern matching for parent page search. (73836)

Site Editor

  • Site Editor Pages: Add “notes count” field. (73609)

Theme

  • Expand error family of tokens. (73793)

Bug Fixes

Block API

  • Fallback to all attributes when checking for unmodified block. (73867)

Block Editor

  • Link Control: Clear entity metadata when selecting custom URLs. (73825)
  • Block Styles: Fix dynamic block previews. (73709)
  • Pattern insertion: Drag chip when multiple blocks of the same type in a pattern are dragged. (73681)

Block Library

  • Accordion Heading: Add default style for classic themes. (73608)
  • Add 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. support for math block error messages. (73643)
  • Breadcrumbs: Improve home page and front page handling. (73487)
  • Classic Block: Restore HTMLHTML HyperText Markup Language. The semantic scripting language primarily used for outputting content in web browsers. editing option. (73865)
  • Fix Page List block HTML rendering in editor. (73614)
  • Fix Page List block button HTML rendering to escape at output. (73641)
  • Fix align right issue on avatarAvatar An avatar is an image or illustration that specifically refers to a character that represents an online user. It’s usually a square box that appears next to the user’s name. component. (67494)
  • Post Title: Add fallback no title in edit mode when is readOnly. (73750)
  • Post Title: Fix empty heading element when post_title is empty but get_the_title returns markup V2. (73841)
  • Prevent flipping the border style when creating RTL stylesheets. (44170)
  • Verse Block: Prevent text overflow off-screen when the previous block has float. (45221)

Block Transforms

  • Gallery: Fix missing captions 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. transform. (73748)

Command Palette

  • Commands: Restrict editor UIUI User interface commands to entity-edit context. (73717)
  • Fix layout for long label. (73837)
  • Remove context from editor commands. (73807)

Components

  • Fix Notice component action button margins. (69430)
  • Reduce modal style specificity so it can be overridden more easily. (73739)

DataViews

  • Apply primary style to first column if there is no title field. (73729)
  • Fields: Fix suffix button in Slug field. (73829)
  • Fix sticky footer in dataviews grid view. (73661)

Font Library

  • Fix button background and focus outline styles. (73722)

Global Styles

  • Fix: Default color variations not showing in global styles. (73742)
  • Global Styles UI: Remove unnecessary padding for Navigatior component. (73810)
  • Global Styles UI: Restore borders for preview items. (73741)
  • Global Styles UI: Revert some of the padding / markup changes from #73334. (73834)
  • Gutenberg 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: Override coreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. classic theme styles. (73580)

Inspector Controls

  • Fix Hstack prop in PostCardPanel. (73842)

Notes

  • Notes: Avoid incrementing comment_count when notes are resolved or reopened. (73689)
  • Notes: Ensure notes never show on the comments page. (73640)

Paste

  • Raw Handling: Fix grok markdown pasting issues. (73019)

Patterns

  • contentOnly patterns: Mark patterns as contentOnly by adding metadata.patternName to the root block. (73477)

Templates API

  • Template Activation: Update template ID format test. (73629)

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)

Block Editor

  • Fix block toolbar icon CSSCSS Cascading Style Sheets. when using show icon label preference. (73674)

Performance

Block Editor

  • Block Styles: Avoid re-rendering when typing. (73701)

Theme

  • Theme: Better max chroma detection for taperChroma. (73625)

Experiments

Block API

  • PHPPHP The web scripting language in which WordPress is primarily architected. WordPress requires PHP 7.4 or higher-only blocks: Pass all metadata from PHP registration to the client. (73556)

Collaboration

  • Real-time collaboration: Add UndoManager support for collaborative editing. (72407)
  • Real-time collaboration: Disable syncing for “synthetic” template posts. (73526)

Font Library

  • Add dedicated font library page. (73630)
  • Add Overlay template part area behind Experiment. (73359)
  • Add overlay template part selector to Navigation block (behind experiment). (73760)

Routing

  • Boot: Add conditional inspector rendering via route.inspector(). (73703)
  • Routing Boot package: Add mobile rendering. (73620)
  • Routing: Add page title support. (73847)
  • Routing: Add view transitions to the new routing infrastructure. (73586)

UI Components

  • UI: Add border support to Box component. (73530)
  • UI: Add Stack component leveraging gap spacing design tokens. (73308)
  • UI: Update Stack component to support only gap tokens. (73852)

Documentation

Block API

  • Block JSONJSON JSON, 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. schema: Add visibility key to supports definition. (73612)
  • Docs: Add “Migrating Blocks for 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. Editor Compatibility” page. (73778)
  • Docs: Add missing periods to example descriptions in block-attributes.md. (73666)
  • Update Default block example code. (65229)

Components

  • Docs: Add JSDoc for getUserLabel in users autocompleter. (73651)

DataViews

  • DataViews docs: Add missing props. (73611)
  • DataViews stories: Update empty story. (73619)

General

  • Fix a typo in the documentation. (73658)

Packages

  • Docs: Update package documentation with general guidelines. (73633)

Storybook

  • Storybook: Add keywords to icon stories. (73524)

Code Quality

Block bindings

  • Block Bindings: Componentize. (73579)

Block Editor

  • Fix ESLint warnings for the ‘useInsertionPoint’ hook. (73868)
  • Fix block edit component hook dependencies. (73302)
  • Remove unused ‘__unstableBlockNameContext’. (73783)
  • Remove usage of Emotion. (73799)
  • Simplify ‘useSelect’ deps in ‘InserterDraggableBlocks’. (73687)

Collaboration

  • Notes: Simplify editing mode change position tracking. (73696)

Components

  • AlignmentMatrixControl: Fixup style names and nesting. (73757)
  • AlignmentMatrixControl: Migrate Emotion to style.module. (73714)
  • AnglePickerColor: Migrate Emotion to style.module. (73786)
  • FormTokenField, FlatTermSelector: Hard deprecate bottom margin. (73846)

DataViews

  • Field API: Move validation to the field type. (73642)
  • Remove extra wrapper for GridItem. (73665)

Font Library

  • Move Font Collection fetching to core-data entities. (73635)
  • Move font family fetching and types to core-data. (73637)
  • Simplify cache invalidation. (73639)

Global Styles

  • Fix ‘useSelect’ warning. (73728)
  • Fix browser warnings in Global Styles. (73279)
  • WP_Theme_JSON: use self:: For class private static methods. (73566)

Patterns

  • ContentOnlyControls: Refactor ad hoc fields to use setValue instead of updateBlockAttributes. (73680)

Site Editor

  • Fix ‘useNavigateToPreviousEntityRecord’ internal deps. (73740)

Style Book

  • Fix ESLint warnings. (73882)

Theme

  • Theme: Repurpose Figma token plugin to extract JSON override files for modes. (73860)
  • Theme: Restructure theme tokens to embed prefix, flattened modifiers. (73859)
  • Theme: Use valid DTCG color format for primitive values. (73858)

Write mode

  • Block Editor: Restore ToolSelector component for backward compatibility. (73592)

Tools

Build Tooling

  • Attachments controller: Use 6.7 compat method. (73634)
  • Fix package side effects for esbuild. (73795)
  • Linting: Disable the wordpress dependency group lint rule. (73616)
  • 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.: Add Carlos Bravo to mailmap. (73840)
  • Meta: Introduce .mailmap for transforming author names. (72412)
  • Scripts: Update license checker to ignore invalidinvalid A 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. package entries. (73528)
  • Storybook: Skip transpilation of build-modules files. (73780)
  • wp-build: Fix invalid package references for peer dependencies. (73676)
  • wp-ui: Add legacy export fields to package.json. (73850)
  • Fix CI static analysis on Windows. (73911)

Testing

  • Remove custom import resolvers and package subpath syntax rules. (72978)
  • Tests: Emulate form blocks experiments in integration tests. (73705)
  • Tests: Update assertion for ‘Global styles 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.’ end-to-end test. (73685)
  • Upgrade Playwright to v1.57. (73686)

Patterns

  • Content only and patterns: Detach edit fields from the content only experience. (73605)

First-time contributors

The following PRs were merged by first-time contributors:

  • @badasswp: Chore: Shorten timeout duration for Snackbar component. (73814)
  • @dhasilva: DataViews: Apply primary style to first column if there is no title field. (73729)
  • @manhphuc: Docs: Add missing periods to example descriptions in block-attributes.md. (73666)
  • @metodiew: Fix a typo in the documentation. (73658)

Contributors

The following contributors merged PRs in this release:

@aduth @Aljullu @andrewserong @annezazu @badasswp @cbravobernal @chriszarate @dhasilva @dmsnell @getdave @gigitux @huzaifaalmesbah @Infinite-Null @ingeniumed @jameskoster @jasmussen @jeryj @jonathanbossenger @jorgefilipecosta @jsnajdr @juanfra @lezama @Mamaduka @manhphuc @Mayank-Tripathi32 @metodiew @mikachan @mirka @ntsekouras @oandregal @ockham @priethor @ramonjd @ryelle @scruffian @shimotmk @SirLouen @t-hamano @tellthemachines @tyxla @Utsav-Ladani @yogeshbhutkar @youknowriad


Props to @youknowriad for the peer review.

Summary, Dev Chat, December 17, 2025

Start of the meeting in 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/., facilitated by @desrosj 🔗 Agenda post.


Note: This was the final Dev Chat of 2025. The next Dev Chat will take place on January 7, 2026. Bug scrub meetings may still take place in the meantime. Thanks everyone, and see you in the new year.

Announcements 📢

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/ 22.3 has been released!

Gutenberg 22.3 is now available for download!

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. Asia 2026 Contributor DayContributor Day Contributor Days are standalone days, frequently held before or after WordCamps but they can also happen at any time. They are events where people get together to work on various areas of https://make.wordpress.org/ There are many teams that people can participate in, each with a different focus. https://2017.us.wordcamp.org/contributor-day/ https://make.wordpress.org/support/handbook/getting-started/getting-started-at-a-contributor-day/.: Call for table leads

Contributors interested in helping with the CoreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. Team during the WordCamp Asia 2026 Contributor Day can contact @krupajnanda.

WordPress 6.9 Hotfixes

Since the WordPress 6.9 release, several issues have been reported, temporary workarounds are available as plugins and will be included in a maintenance release planned for January 2026 at the earliest, with full details in the linked post.

Planning for WordPress 7.0

With 6.9 released, attention is already shifting toward WordPress 7.0, including early ideas, focus areas, and ways to contribute, all outlined in the follow-up post.

Real-time collaboration: Early user feedback

Real-time collaboration for WordPress 7.0 has been in WordPress VIP 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. testing since October 2025, with early feedback covered in this post.

Discussions 💬

Dev Chats Over the Holidays

During today’s meeting, it was decided to skip the next two Dev Chat meetings, making today’s meeting the final Dev Chat of the year. Bug scrub meetings may still take place during this time. The next Dev Chat is scheduled for January 7, 2026.

#7-0, #core, #dev-chat

Dev Chat Agenda – December 17, 2025

The next WordPress Developers Chat will take place on Wednesday, December 17, 2025, at 15:00 UTC in the core channel on Make WordPress Slack.

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 ticketticket Created 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 📢

WordPress 6.9 Hotfixes

Since the WordPress 6.9 release, several issues have been reported, temporary workarounds are available as plugins and will be included in a maintenance release planned for January 2026 at the earliest, with full details in the linked post.

Planning for WordPress 7.0

With 6.9 released, attention is already shifting toward WordPress 7.0, including early ideas, focus areas, and ways to contribute, all outlined in the follow-up post.

Real-time collaboration: Early user feedback

Real-time collaboration for WordPress 7.0 has been in WordPress VIP 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. testing since October 2025, with early feedback covered in this post.

Discussions 💬

The discussion section of the agenda is for discussing important topics affecting the upcoming release or larger initiatives that impact the CoreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. 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.

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. Asia 2026 Contributor DayContributor Day Contributor Days are standalone days, frequently held before or after WordCamps but they can also happen at any time. They are events where people get together to work on various areas of https://make.wordpress.org/ There are many teams that people can participate in, each with a different focus. https://2017.us.wordcamp.org/contributor-day/ https://make.wordpress.org/support/handbook/getting-started/getting-started-at-a-contributor-day/.: Call for table leads

@krupajnanda asked whether contributors would be available to volunteer as table leads for the WordCamp Asia 2026 Contributor Day.


No further topics have been submitted for this discussion round yet.
If you have something in mind, feel free to leave a comment below this post.

Open floor  🎙️

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.

#7-0, #agenda, #core, #dev-chat

Performance Chat Summary: 16 December 2025

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 that he is still working through fixes for a CSSCSS Cascading Style Sheets. issue introduced in WordPress 6.9 related to loading separate 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 demand in PR #10601.

Performance Lab 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 (and other performance plugins)

  • @westonruter noted that several PRs needs to be reviewed.
  • @b1ink0 asked for feedback regarding the planned sunsetting of the Web Worker Offloading plugin issue #2284.

Open Floor

  • @westonruter shared that Safari now supports measuring the LCP metric, which he said will meaningfully improve URLURL A specific web address of a website or web page on the Internet, such as a website’s URL www.wordpress.org Metric collection for Optimization Detective
    • @spacedmonkey wondered whether the team could begin running the performance coreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. e2e tests against Safari now that the browser includes this capabilitycapability 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)..
  • @westonruter added that he is interested in exploring Compression Dictionaries after learning they can be implemented in PHPPHP The web scripting language in which WordPress is primarily architected. WordPress requires PHP 7.4 or higher with relatively little effort referenced article.
  • @b1ink0 shared information regarding the final 2025 meeting to discuss the 2026 roadmap, scheduled for December 23, 2025.

Our next chat will be held on Tuesday, December 30, 2025 at 16:00 UTC in the #core-performance channel in Slack.

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

Real-time collaboration: Early user feedback

Real-time collaboration—the ability for multiple users to edit the same post simultaneously, similar to Google Docs—is being developed for WordPress 7.0, scheduled for release in 2026. Beginning in October 2025, WordPress VIP customers have had access to 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. version of real-time collaboration to begin stress-testing the experience across different environments and use cases, informing the work as early as possible. The beta has provided valuable insights into how real-time collaboration performs with production WordPress sites and real editorial workflows. The response has been enthusiastic, with several organizations already enabling the feature in production. If you haven’t seen it already, here’s a demo of the feature in action.

About the research

This post summarizes feedback gathered from 45 beta participants between October and early December 2025. While the issues are being tracked individually under the [Type] Real Time Collaboration label, this summary centralizes the information for easier review and broader transparency. The insights come from:

  • Direct conversations with technical leads and editorial teams at participating organizations.
  • Recorded testing sessions and demonstrations.
  • Written feedback submitted through beta feedback channels.
  • Observations of production and staging deployments.

Participating organizations span industries including news and media, higher education, research institutions, and enterprise publishing; all are larger organizations with multi-person editorial teams.

Key insight: It just works with modern WordPress

The most consistent feedback: real-time collaboration works seamlessly when sites are built for modern WordPress. Organizations using 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 with native WordPress blocks and custom blocks developed using best practices reported smooth experiences with minimal issues.

One technical lead at a major research institution noted their team has invested in a deep understanding of 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/ and, as a result, “… have not run into any issues.” Their editorial team described the feature as delivering “an amazing workflow change,” eliminating the frustration of kicking colleagues out of posts to make quick edits.

Multiple teams tested the limits by:

  • Adding dozens of blocks simultaneously.
  • Copying large amounts of existing content in parallel.
  • Having entire teams edit the same post together (one team specifically noted “this is so fun”).

In these stress tests with native blocks and modern custom blocks, real-time collaboration held up remarkably well.

Other insights

The value of Notes

The newly released Notes feature generated significant enthusiasm. 

One communications team called it “revolutionary.” Teams particularly value the ability to leave contextual feedback directly in the editor without disrupting the editorial flow. 

This feedback confirms that collaborative editing is a suite of tools that make it easier for you to create in WordPress from your very first keystroke, not a single feature.

Flexible workflows

Different organizations expressed distinct preferences for how collaboration should work within their editorial processes:

  • Some teams want flexibility: Publishers aggregating content from distributed teams appreciate the ability for multiple editors to work simultaneously across different sections of a post.
  • Others prefer predictability: Organizations with established “check-in, check-out” workflows expressed interest in mode controls that would allow them to programmatically determine editing permissions based on user roles and post status. 

One organization specifically noted their less technical users might feel “uncomfortable with the shift to a fully collaborative environment, fearing they might step on each other’s toes.”

Teams want the ability to adapt the collaboration model to their existing editorial culture rather than completely restructuring workflows.

Attribution

Multiple organizations emphasized the need for better attribution tracking. Today, when a user saves a revision, you know they made all changes. With real-time collaboration, multiple users can make changes to the same version.

Contributors are working to address this feedback by adding “contributor” metadata for versions. You can follow that work in this GitHub issue.

Where things go wrong

The most significant compatibility issues emerged with blocks storing data in post 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. rather than block attributes, particularly when that post meta isn’t updated using modern methods.

Real-time collaboration works with any post meta that is registered with show_in_rest set to true. Metadata registered this way will participate in the data store that powers real-time collaboration. Legacy metaboxes update meta using other means.

This will be an important area to address for WordPress 7.0. 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 authors will want to know what work, if any, is required to ensure their code supports real-time collaboration.

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)

The current beta does not meet the accessibility standards expected for WordPress. Providing functional affordances in a real-time environment is challenging, but it is a challenge to be met.

This is an area where help is needed from the Accessibility team. You can report any accessibility issues you encounter on this GitHub tracking issue.

Going forward

Experimental work in Gutenberg is tracked in a branch, and it is also being merged upstream to provide undo support and post meta syncing.

If you want to test the beta for real-time collaboration today, you can follow the instructions in this GitHub repository to set up an environment. You can test locally by editing content in two different browser windows. 

Stay tuned for broader dedicated calls for testing and more summaries like this. The aim now is to get everything into Gutenberg 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. to make it easier for more testing in different environments.

If you have feedback or questions, please comment here. Issues can be added with the [Feature] Real-time Collaboration label on GitHub

Props to @annezazu for reviewing this post.

#collaboration, #phase-3

WordPress 6.9 Hotfixes

Since being released on December 2, WordPress 6.9 has been downloaded over nine million times. Shipping is the first step, and core contributorsCore Contributors Core contributors are those who have worked on a release of WordPress, by creating the functions or finding and patching bugs. These contributions are done through Trac. https://core.trac.wordpress.org. have been monitoring 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. reports, forum posts, and social networks to see the effects of the release. Issues are analyzed to understand how widespread they are, the impact they have on sites, and if there is a viable workaround available. This is combined with analyzing potential release dates, coordination with other projects that may be necessary, and the riskiness of fixes to decide on a release date for a maintenance release. Please note, only a small subset of sites are facing these issues.

For WordPress 6.9, this analysis has led to the decision that a maintenance release will be best in January at the earliest.

Some of the reported bugs can be fixed using small code snippets, but not everyone is comfortable editing PHPPHP The web scripting language in which WordPress is primarily architected. WordPress requires PHP 7.4 or higher files on their site. To reduce the burden on site administrators who are affected by these reported bugs, these snippets have also been made available as plugins. It is recommended to test your site before installing one of these plugins.

CSSCSS Cascading Style Sheets. Issues from Loading Separate 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 Demand

WordPress 6.9’s new ability to load block styles on demand in classic themes has led to some instances where some sites running a classic theme are seeing content styled in unexpected ways due to wp-block-library styles being omitted when they were previously included by default. There can also be differences in file loading leading to unexpected changes in the CSS Cascade. See #64354 for more information and to follow as a permanent fix is developed.

The Load Combined Core Block Assets Plugin by coreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. 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. @westonruter is available to help here.

E-Mails Not Being Sent

Some changes aimed at improving the reliability of email have uncovered bugs with some configurations of the underlying libraries and applications used to send email. This means that is some circumstances, WordPress installs that had been able to send emails no longer can. See #64368 for more information and to follow as a permanent fix is developed.

The Hotfix 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, maintained by multiple core committers, has been updated to include a workaround.

Adjacent Post Navigation

Additionally, a change to adjacent post navigation is leading to some sites seeing infinite loops when modifying the get_{$adjacent}_post_where 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.. This change was not previously publicized, but the linked 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. is now published and highlighted in the 6.9 field guide. Please ensure you are using the most up-to-date version of plugins and themes when updating to WordPress 6.9.


Thank you to the contributors who have tested and reported issues they have seen along. Futher, thank you to the developers who have followed up on these reports and are continuing to work to find solutions that help WordPress users in both the short and long term. As a community project, WordPress would not be able to function without the volunteers and individuals sponsored to work on WordPress Core. If you see an issue, please report it to either trac or the gutenberg repository depending on where the issue occurs.

Props @desrosj and @westonruter for assisting with drafting this post.

#6-9

Planning for 7.0

With 6.9 out in the world, our collective attention has already turned to 7.0. Core contributorsCore Contributors Core contributors are those who have worked on a release of WordPress, by creating the functions or finding and patching bugs. These contributions are done through Trac. https://core.trac.wordpress.org., together with Matt and Mary, had a call to discuss ideas and projects. There was shared excitement about this release, even if it’s just another number. This post acts as a gathering point for contributors to share what they are starting to work on and to find known areas they can contribute to. There will be another more tactical follow up with release schedule and responsibilities, this one is about the initial scope.

How to interact with this post

Please do not use this as a spot to request folks to work on features. 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 be the repository owner. https://github.com/ and TracTrac An open source project by Edgewall Software that serves as a bug tracker and project management tool for WordPress. are the best places to share feedback, talk about impact, and advocate for issues. 

Please use this post to share what you are working on, including areas you’d like to help with that may be listed here, as well as areas that you are working on that are not. Items with TBD indicate areas where contributors are needed so please comment below if you’re keen to work on those pieces.

If you were planning to work in an area listed below and don’t see your name, please be sure to comment as well and it’ll be updated. It’s intentional that this post is meant to be a place to shore up who is working on what out in the open at this early stage.

Also note this is neither comprehensive nor yet a commitment that all of these things will be part of 7.0, since many are in early stages and may not make this release. Items marked with ✅ mean the work is already merged 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/ or 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..

Collaboration 

The project is getting deeper into Phase 3: Collaboration. Notes was a highlight feature in WP6.9 and there’s several improvements already planned to make it even more powerful and resilient.

Real time collaboration

  • Link: GitHub issue
  • Key considerations:
    • There’s been a lot of progress in defining the UIUI User interface and the diffing mechanics for reconciling changes. It’s in very good shape and needs to be reviewed and tested diligently, especially around compatibility with third-party blocks and plugins.
    • This feature has a stronger dependency on server support and infrastructure than usual WordPress features, so there needs to be a definition of what’s the baseline experience shipping in WordPress (for example, peer-to-peer with 1 or 2 connections) and how it can be augmented, either by WP.org, hosting providers, or plugins.
  • Contributors: @acicovic, @aduth, @alecgeatches, @czarate, @ingeniumed, @jsnajdr, @maxschmelingkc, @paulkevan, @shekharnwagh, @youknowriad

Notes i2

  • Link: GitHub issue
  • Key considerations:
    • Support partial selection inside 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. rich text fields.
    • A “suggestions” mode and interface that allows Notes to refer to specific content within a block and apply the suggestions.
    • Support for multi-block notes.
    • Add rich text support in the comments.
    • Develop a dashboard 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. for recent notes.
    • More notification options (responses, follow a note, mentions).
  • Contributors: @adamsilverstein, @jeffpaul, @mamaduka 

Adminadmin (and super admin)

Improving screens across wp-admin

  • Link: TBD
  • Key considerations:
    • Explore CSS improvements that can modernize the look and feel. For example, consider making the “modern” admin color scheme the default.
    • Admin bar and editor “site hub” improvements. Make the W menu item filterable. Possibly start work as an experiment in Gutenberg.
    • Consider a “This time last year” widget for bloggers.
    • Bring grid layout customization to dashboard experience or other screens. (Possible widgets at the top of comments, etc).
  • Contributors: TBD, @fabiankaegy, @karmatosed, @mcsf

DataViews and DataForms iterations

  • Link: 7.0 iteration issue
  • Key considerations:
    • DataForms/QuickEdit/Document inspector design iterations.
    • Hierarchical post visualization.
    • Make DataViews screens extensibleExtensible This is the ability to add additional functionality to the code. Plugins extend the WordPress core software. in the site editor (templates, pages, etc).
  • Contributors: @oandregal

Design System

  • Link: GitHub issue
  • Key considerations:
    • Components are already being worked on in wordpress/ui.
    • Theming system with design tokens using wordpress/theme.
    • Start replacing key parts of the editor UI with improved components (tabs, flyout menus).
  • Contributors: @0mirka00, @aduth, @jsnajdr, @mciampini, @wildworks

Font library admin section

  • Link: Github issue
  • Key considerations:
    • Support for block themes.
    • Support for hybrid/classic themes.
  • Contributors: @youknowriad

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. 

  • Link: GitHub issue
  • Key tasks:
    • Rethink the revisions interface to be more modern, intuitive, and work with blocks.
    • Show visual diffs. 
    • Bonus: potentially tie in with collaborative editing, suggestions, and undo management.
  • Contributors: @adamsilverstein

Customizable Keyboard Shortcuts

  • Link: Github issue
  • Key considerations:
    • Build with design system components.
  • Contributors: TBD

APIs

Abilities & Workflows 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.

Upgrade to ReactReact React is a JavaScript library that makes it easy to reason about, construct, and maintain stateless and stateful user interfaces. https://reactjs.org/. 19

  • Link: Github issue
  • Key considerations:
    • There’s a path for the block editor in the mobile apps that should remove this dependency blockerblocker A bug which is so severe that it blocks a release..
    • Ecosystem impact.
  • Contributors: @aduth @jsnajdr @mamaduka @ralucastn @tyxla

Block API: Add validation levels

  • Links: Github issue with initial PR 
  • Key considerations:
    • The scope of this issue is to drastically reduce the amount of times a user sees a “this block is broken” message.
    • Impact on block API.
  • Contributors: @matveb @mcsf @youknowriad

Enforced iframed editor

  • Link: GitHub issue.
    • Backwards compatibility, extended testing.
    • MigrationMigration Moving the code, database and media files for a website site from one server to another. Most typically done when changing hosting companies. guide.
  • Contributors: @ellatrix, @wildworks

WP client AI API

  • Link: GitHub project
  • Key considerations:
    • An AI client and API for WordPress to communicate with any generative AI models of various capabilitiescapability 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). using a uniform API.
    • Integration with Abilities API.
    • Strictly no providers included in coreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress..
    • Decide nomenclature.
    • Ideally, the minimum PHPPHP The web scripting language in which WordPress is primarily architected. WordPress requires PHP 7.4 or higher version has to be bumped from PHP 7.2.
  • Contributors: @flixos90 @jason_the_adams

Creating blocks and patterns on the server

  • Link: GitHub issue
  • Key considerations:
    • Most of the tools for a pretty straightforward PHP-only representation of blocks and patterns, including bindings, are ready.
    • Declarative block attributes and form components.
    • Pattern creation and syntax that allows easy construction of blocks and bindings.
  • Contributors: @priethor, TBD

wordpress/build and routing (site editor)

  • Link: GitHub issue; Scripts issue
  • Key considerations.
    • Add extensibility to site editor routing.
    • Dependency on standalone font library.
    • Refactor the site editor to allow 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 authors to add their pages there.
    • Opinionated build tool for plugins.
    • Update Gutenberg – Core 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. flow.
  • Contributors: @youknowriad 

Shortblocks

Block bindings iterations


Navigation Block

A series of improvements were identified to simplify the navigation workflow and make the experience of managing menus more intuitive and straightforward.

Simpler navigation editing

Ability to customise “mobile” overlay 

  • Link: GitHub issue
  • Key considerations:
    • Implemented as a template part.
    • Ability to customize when the overlay appears (breakpoint settings) just for navigation overlay.
  • Contributors: @get_dave, @jeryj

Customization

Over the past couple years we’ve been iterating on a series of related systems with the hope of arriving at a more streamlined editing experience of composite blocks and design patterns. We have some solid directions sketched out that are looking promising.

Explore more intuitive page navigation in the site editor

  • Link: TBD
  • Key considerations:
    • Modify the title bar to display a pages dropdown instead of empty command palette. List the pages used in the primary menu with a link to “browse all pages”. Exploration.
    • Add next/previous page links in zoomed-out view, similar to a carousel. See a preview in a zoomed out state with arrows next to preview or title bar. Exploration.
  • Contributors: @ellatrix

Pattern Editing (aka ContentOnly)

Improve template management

Responsive editing mode

Block supports and design tools:  


Blocks

Keeping the momentum on adding new blocks and new block tools to expand the palette and expressiveness offered to theme builders and users. There’s also some refinements to some fundamental aspects of blocks to make them more resilient and more consistent.

Group block attributes

  • Link: GitHub Issue
  • Key considerations:
    • Adding groups to InspectorControls (like BlockControls).
    • Add support for list representation to block API based on nav block work.
    • Implement content representation for media and rich text attributes. (Connected with contentOnly, bindings, and partially synced patterns work.)
  • Contributors: TBD

✅ Cover block: video embeds

Modernize Code editor + Code block

Lazy load the Classic block

Leverage iAPI for instant search block & submit comments without full page refresh

Writing flow + drag and drop improvements

  • Link: GitHub issue
  • Key considerations:
    • Get to a place where the drag handle from the toolbar can be entirely removed due to improved drag and drop functionality.
    • Making multi selection work on touch devices.
    • Improvements to inline insertion and inline images.
  • Contributors: @ellatrix

✅ Tabs block 

Release the Table of Contents block 

Playlist block

Slider block

Dialog block

✅ Breadcrumb block

Add more dynamic URLs via block bindings to Buttons block and Image block

Icon block

  • Link: GitHub issue
  • Key considerations:
    • Ship with a default set made out of some wordpress/icons.
    • Allow extenders to register their own sets.
  • Contributors: @mcsf @welcher

Gallery block: add lightbox support with the ability to switch between images

Introduce heading levels as Heading block variations

  • Link: Github issue; https://github.com/WordPress/gutenberg/issues/42181
  • Key considerations:
    • Show up in search and slash inserter.
    • Easy toggling in 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. inspector and transforms.
  • Contributor: @matveb

Aim to stabilize grid block


Media

Client side media work

Media editor


Designers looking across all these projects: @fcoveram, @joen@jameskoster, @mattmiklic.

#7-0, #phase-3

Summary, Dev Chat, December 10, 2025

Start of the meeting in 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/., facilitated by @benjamin_zekavica 🔗 Agenda post.

Announcements 📢

WordPress 6.9 is now available!

WordPress 6.9 is now available for download. Huge thanks to all contributors who made this release possible. 

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/ 22.2 has been released!

Gutenberg 22.2 has been released and is available for download!

Discussions 💬

6.9.1 Planning

A review of the tickets reported since the 6.9 release does not indicate a need for an immediate 6.9.1 maintenance release. The feedback so far does not point to issues that require a rapid response. A timeframe early in the new year is being considered to allow enough time for further testing and coordination. @jorbin will prepare a post for the CoreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. blogblog (versus network, site) to share the current status.

Missing “Needs Patchpatch A 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. / Needs PR” Label in the Gutenberg Repository

@sirlouen raised that it is often unclear when a Gutenberg issue is ready for patch work. Some issues may appear complete, even though they still require review or testing. The current labels do not always show this distinction, which can make it harder to identify issues that are ready to work on. It was also noted that clearer information about the issue workflow could help improve orientation.

#6-9, #core, #dev-chat

Adjacent Post Navigation Changes in WordPress 6.9 and Compatibility Issues

TL;DR

WordPress 6.9 introduced a fix for adjacent post navigation when posts have identical publication dates. While this resolved a long-standing 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., it inadvertently caused infinite loops in some extensions that modify the get_adjacent_post() WHERE clause.

What Changed in WordPress 6.9

In WordPress 6.9 (Trac #8107), a bug fix landed where next/previous post navigation failed when multiple posts shared identical post_date values. This commonly occurred when bulk-publishing draft posts.

The Technical Change

The get_adjacent_post() function’s WHERE clause was modified to include ID-based comparison as a tiebreaker:

Before (WordPress 6.8 and earlier):

WHERE p.post_date > '2024-01-01 12:00:00' 
  AND p.post_type = 'post'

After (WordPress 6.9):

WHERE (
    p.post_date > '2024-01-01 12:00:00' 
    OR (
      p.post_date = '2024-01-01 12:00:00' 
      AND p.ID > 123
    )
  ) 
  AND p.post_type = 'post'

This ensures deterministic ordering when posts have identical dates, using the post ID as a secondary sort criterion.

Additionally, the ORDER BY clause was updated:

-- Before
ORDER BY p.post_date DESC 
LIMIT 1

-- After  
ORDER BY p.post_date DESC, 
         p.ID DESC 
LIMIT 1

The Problem: Infinite Loops in Some Themes/Plugins

As Trac ticket #64390 documents, some plugins and themes modify adjacent post navigation to change behavior. For example, WooCommerce’s Storefront theme navigates between products instead of regular posts. These plugins use the get_{$adjacent}_post_where 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. to replace the current post’s date with a different post’s date.

Here’s what was happening:

  1. 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 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. into get_previous_post_where filter.
  2. Plugin does string replacement: replaces $current_post->post_date with $target_product->post_date.
  3. Problem: The new WHERE clause structure includes the post date in TWO places (date comparison AND ID comparison).
  4. Simple string replacement modified the date comparison but left the ID comparison unchanged.
  5. Query returns the same post repeatedly → infinite loopLoop The 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..

Real-World Example: Storefront Theme

The fix to the WooCommerce Storefront theme illustrates this issue. They had to add special handling for the ID comparison:

// Replace the post date (works as before)
$where = str_replace( $post->post_date, $new->post_date, $where );

// NEW: Also need to replace the ID comparison (WordPress 6.9+)
if ( strpos( $where, 'AND p.ID ' ) !== false ) {
    $search = sprintf( 'AND p.ID %s ', $this->previous ? '<' : '>' );
    $target = $search . $post->ID;
    $replace = $search . $new->ID;
    $where = str_replace( $target, $replace, $where );
}

For Plugin Developers: Detecting and Fixing the Issue

How to Detect If Your Plugin Is Affected

Your plugin is likely affected if it:

  1. Uses the get_{$adjacent}_post_where filter.
  2. Performs string replacement on post dates in the WHERE clause.
  3. Changes which post is considered “adjacent” (like navigating between custom post types instead).

To test if your plugin works correctly with WordPress 6.9:

  1. Create 3-4 posts with identical publication dates (bulk publish drafts).
  2. Navigate between them using your plugin’s adjacent post functionality.
  3. Verify that navigation moves to different posts (not the same post repeatedly).
  4. Check for infinite loops or performance issues.

Quick Fix: Handle the ID Comparison

If you’re doing date replacement in the WHERE clause, you also need to handle the ID comparison. There are numerous ways to tie a knot, but the following example is loosely inspired by Storefront’s recent fix.

add_filter( 'get_next_post_where', 'example_custom_adjacent_post_where', 10, 5 );
add_filter( 'get_previous_post_where', 'example_custom_adjacent_post_where', 10, 5 );

function example_custom_adjacent_post_where( $where, $in_same_term, $excluded_terms, $taxonomy, $post ) {

    // IMPORTANT: Replace this with your logic to find the desired adjacent post.
    $adjacent_post = example_find_adjacent_post_function( $post );
	
    if ( $adjacent_post instanceof WP_Post ) {
        // Replace the date comparison.
        $where = str_replace( $post->post_date, $adjacent_post->post_date, $where );

        // Replace the post ID in the comparison.
        $where = preg_replace(
            "/AND p\.ID (<|>) {$post->ID}\)/",
            "AND p.ID $1 {$adjacent_post->ID})",
            $where
        );
    }

    return $where;
}

You could also add a version_compare( $wp_version, '6.9', '>=' ) test if you’d like to support multiple versions.

Important: don’t forget to first test any code on your site, and customize it according to your needs.

Next time

At the time, this was not a known breaking change, and was classed as a bug fix.

However as @jmdodd points out in the ticket, changes to WP_Query, especially SQL changes should be, by default, communicated more widely. Going forward:

  1. Reach out to known plugins using the get_{$adjacent}_post_where filter.
  2. Include a migrationMigration Moving the code, database and media files for a website site from one server to another. Most typically done when changing hosting companies. guidance in the 6.9 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. (as applicable).
  3. Test against any known, popular plugins that modify adjacent post queries.

What’s Next and Getting Help

Discussions have started on the ticket about ways to make this more robust in future WordPress versions. If you’re experiencing issues related to this change:

  1. Check Trac ticket #64390 for the latest updates.
  2. Ask questions in the #core channel on WordPress 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/..
  3. Review the original fix PR #10394.

Thank you for your patience and understanding. If you maintain a plugin affected by this change, please update it using the guidance above, and don’t hesitate to reach out if you need assistance.

Thanks to @westonruter @isabel_brison @andrewserong @jmdodd for helping to prepare this post.

#6-9, #dev-notes