티스토리 수익 글 보기
Agenda post.
Announcements 
WordPress 7.0 Call for Volunteers
If you are interested in volunteering for WordPress 7.0, please comment here by January 16.
Nominations for Core Team Reps 2026
The nomination process for Core Team Representatives for 2026 is now open. Please submit your nomination here.
Dropping support for PHP 7.2 and 7.3
Support for PHP 7.2 and 7.3 will be dropped in WordPress 7.0. Here you can find more information.
6.9 Release Retrospective
The 6.9 release retrospective is open to all contributors, not only release squad members.
Broader feedback helps improve future release processes. The form and comments will be open until January 15.
Discussions 
PHP Extensions List – filter
The topic was about the PHP filter extension and if it should be default. It was noted that the extension already exists on almost all PHP installs. The idea was to move it from optional to built-in (default), so no extra checks are needed. It was also noted that WordPress Core barely uses it, except in PHPMailer, and that filter functions, especially for email checks, are not very reliable.
WordPress Performance Trac tickets
- @westonruter shared that an issue related to Modern Image Formats in core had surfaced, pointing to #60480.
- @westonruter shared the reports covering performance-related tickets for WordPress 6.9.1 and 7.0 specifically enhancements/features.
- @westonruter highlighted #64066 as potentially the most impactful open ticket, which proposes changing Speculative Loading’s default eagerness from conservative to moderate when caching is detected. @westonruter noted that no negative feedback has been received so far but acknowledged the change could be controversial and planned to ask for additional feedback in the #hosting channel.
- @mukesh27 asked about the status of the Admin View Transitions work. @westonruter replied that this is tracked in #64470, with an active PR #10699 opened by @flixos90.
- @westonruter shared that the change looks close to being ready, but an unexpected E2E test failure still needs investigation. @mukesh27 shared that the implementation looks solid overall, and @westonruter mentioned he had merged the latest trunk changes and planned further debugging, including testing behavior with unminified scripts if the failure persists.
Performance Lab Plugin (and other performance plugins)
- @SarthakJaiswal shared that he has been working on PR #2321, plans to review feedback, and will implement required changes soon, while also asking whether there are additional polishing improvements worth considering.
Open Floor
- @mukesh27 asked who would be attending WordCamp Asia this year. @westonruter shared that he is looking forward to the Core Performance table at Contributor Day and noted that, since the conference will correspond with WordPress 7.0, either team could land some very early things for WordPress 7.1 or focus on Performance Lab.
Our next chat will be held on Tuesday, January 27, 2025 at 16:00 UTC in the #core-performance channel in Slack.
]]>The Role
In the WordPress open-source project, each team has on average one or two representatives, abbreviated as reps. For the historians out there, the role go way back to 2012.
Historically with the Core team, the team rep duration was around a year, though some reps stuck around longer if there was a specific need.
Anyone who serves as a team rep is responsible for communicating on behalf of the Core team to the other contributor groups via weekly updates, as well as occasional cross-team chats. Reps are also consulted on Contributor Day, where they help to find someone within the Core team who will be at an event who can lead a Core table. Full details on the Team Rep role can be found on the Team Update site.
It is not called team lead for a reason. It’s an administrative role. While people elected as team reps will generally come from the pool of folks that people think of as experienced leaders, the team rep role is designed to change hands regularly.
This role has a time commitment of at least one or two hours a week.
The main tasks include:
- Posting the weekly Dev Chat agenda, hosting the chats, and summarizing them (which can include writing and encouraging others to contribute to the summaries). More details on coordinating devchat are available in the Core handbook.
- Keeping up with the current releases (mainly WordPress major and minors and Gutenberg bi-weekly releases) and communicating updates.
- Keeping a watch on the moving parts of the team to report for quarterly updates (example).
How the election works
Please nominate people in the comments of this post. Self-nominations are welcome. The deadline is January 31, 2026 at 23:59 UTC. If there are fewer than 2 nominees who have accepted their nominations, the deadline will be extended.
Once the nomination period expires, a poll will be opened for voting. It will stay open for two weeks. The new reps will start their role in February 2026.
Disclaimer: if you are nominated, please don’t feel like you have to agree to say yes. The election poll will only include the names of the people who have agreed to be nominated. So feel free to reply with a “Thank you, but no thank you”.
If you have any questions, please feel free to ask in the comments or speak to the current team reps. Finally, for reference, these are the 2020, 2021, 2022, 2023, 2024, 2025 nomination posts.
Thanks to @francina for reviewing this post.
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 ticket 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 7.0 Call for Volunteers
If you are interested in volunteering for WordPress 7.0, please comment here by January 16.
Nominations for Core Team Reps 2026
The nomination process for Core Team Representatives for 2026 is now open. Please submit your nomination here.
Dropping support for PHP 7.2 and 7.3
Support for PHP 7.2 and 7.3 will be dropped in WordPress 7.0. Here you can find more information.
6.9 Release Retrospective
The 6.9 release retrospective is open to all contributors, not only release squad members.
Broader feedback helps improve future release processes. The form and comments will be open until January 15.
Discussions 
The discussion section of the agenda is for discussing important topics affecting the upcoming release or larger initiatives that impact the Core Team. To nominate a topic for discussion, please leave a comment on this agenda with a summary of the topic, any relevant links that will help people get context for the discussion, and what kind of feedback you are looking for from others participating in the discussion.
PHP Extensions List – filter
@sirlouen raised a question about setting the filter PHP extension as default. See the Hosting Team Handbook.
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.
The minimum supported version of PHP was last raised in July 2024 to 7.2.24. Since then usage of PHP 7.2 and 7.3 has dropped below 4% of monitored WordPress installations.
Historically, the project has used 5% as the baseline usage percentage that a PHP version must fall below before it can be considered for a well-earned retirement. Now that usage of PHP 7.2 and 7.3 combined has fallen well below that, the process to increase the minimum supported PHP version can proceed.
The goal of increasing the minimum supported version of PHP is to ensure the long-term maintainability of WordPress. The benefits to increasing the minimum supported PHP version manifest over time across multiple areas, including the plugin and theme ecosystem, tooling and libraries for AI, the long-term perception of the WordPress project, developer relations, and eventually within the WordPress codebase itself, including its developer tooling and automated testing infrastructure.
Discussion around this minimum version bump can be found here on the Trac ticket.
What about PHP 8 and higher?
WordPress core is fully compatible with PHP 8.0 to 8.3 and is beta compatible with PHP 8.4 and 8.5.
What about security support?
Sites that are running PHP 7.2 or 7.3 will remain on the 6.9 branch of WordPress once 7.0 is released. While only one branch officially receives security updates, fixes are backported down to WordPress 4.7 as a courtesy when possible.
What about the Gutenberg plugin?
The minimum supported version of PHP will also be increased to 7.4 in the Gutenberg plugin.
Going forward
There are no plans to bump the minimum supported PHP version on a set schedule. The Core team will continue to monitor PHP version usage and work with the Hosting team to encourage users and hosting companies to upgrade their versions of PHP as swiftly as possible. The 5% usage threshold will continue to be used as the standard for the foreseeable future.
At the time of publishing, the PHP version usage is as follows:
- 8.5: 0.23%
- 8.4: 4.90%
- 8.3: 16.74%
- 8.2: 27.29%
- 8.1: 15.39%
- 8.0: 5.69%
- 7.4: 22.20%
- 7.3: 2.04%
- 7.2: 1.81%
Update PHP today
If you need more information about PHP or how to update it, check out this support article that explains more, guides you through the process, and provides instructions for contacting your web hosting provider for assistance.
Props to all those that have contributed to this discussion recently. Thanks to @desrosj, @westonruter, and @jorbin for feedback and proof-reading this post.
]]>Following the typical cadence and accounting for holidays later in the year, the proposed final release date for 7.0 is Thursday, April 9, 2026. This proposed timeline remains flexible for the resulting Release Squad and adjustments can be made if necessary as they determine what timeline works best for their schedule.
Proposed Schedule
| Milestone | Date |
| Alpha Begins | Immediately (7.0-alpha began in trunk on November 12th with [61222]) |
| Beta 1 | Thursday, February 19 |
| Beta 2 | Thursday, February 26 |
| Beta 3 | Thursday, March 5 |
| Beta 4 | Thursday, March 12 |
| Release Candidate 1 | Thursday, March 19 |
| Release Candidate 2 | Thursday, March 26 |
| Release Candidate 3 | Thursday, April 2 |
| Dry Run | Wednesday, April 8 |
| Final Release | Thursday, April 9 |
As always, all dates are subject to change based on development progress.
Call for Volunteers
Each WordPress release depends on contributors from across the project coming together to make it a success.
As with the 6.7, 6.8, and 6.9 release cycles, WordPress 7.0 will continue the approach of forming a smaller, focused Release Squad with making based on feedback received. This streamlined structure places more emphasis on collaboration with the various Make Team Reps, who are encouraged to help coordinate efforts from within their respective teams. The goals are to reduce the overhead on the Release Squad while still ensuring each team’s contributions and priorities are represented throughout the cycle, and to reduce overlap between a Make Team Rep and that team’s Release Squad Leads. Noteworthy Contributors will be captured from Team Reps towards the end of the release cycle.
While the end goal is to publish the final release of WordPress 7.0 during Contributor Day at WordCamp Asia (which follows India Standard Time), traveling to or attending WordCamp Asia is not a requirement to serve on the release squad. All communication related to the release process will continue to take place in the #core Slack channel.
If you are interested in helping lead WordPress 7.0 in one of the following roles, please comment below or reach out in the #7-0-release-leads Slack channel:
- Release Lead – Matt Mullenweg (@matt)
- Release Coordination – helps manage timelines, cross-team collaboration, and status updates
- Tech Leads – oversees core development (including Gutenberg), triage, and critical issues
- Triage Lead – help monitor issues, shepherd patches, and guide contributors
- Test Lead – coordinates testing efforts across the community and test reports
Whether you have led a release before or are looking to get involved for the first time, there are many ways to contribute. Volunteers of all backgrounds and experience levels are welcome!
If you are interested in volunteering, please leave a comment below noting your preferred area(s) by Friday, January 16th. @4thhubbard (or a designee), will review the nominations shortly after to confirm and announce the release squad as soon as possible.
Together we can make WordPress 7.0 the best one yet!
Props to @jeffpaul, @jorbin, and @4thhubbard for reviewing this post.
]]>
Agenda post.
Announcements 
6.9 Release Retrospective
The 6.9 release retrospective is open to all contributors, not only release squad members.
Broader feedback helps improve future release processes.
Discussions 
PHP Extensions List – filter
The discussion covered whether the PHP filter extension is set as default. See the Hosting Team Handbook. @dmsnell asked about the impact on Core, how similar changes were handled before, and mentioned concerns about using functions like FILTER_VALIDATE_EMAIL. @realloc noted that Core uses filter only in a few places, mainly in PHPMailer, and suggested removing those usages instead of requiring the extension. The topic will be discussed again next week.
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 ticket 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 
Happy New Year!
The first Dev Chat meeting of the year will take place on January 7 at the usual time.
6.9 Release Retrospective
The 6.9 release retrospective is open to all contributors, not only release squad members.
Broader feedback helps improve future release processes.
Discussions 
The discussion section of the agenda is for discussing important topics affecting the upcoming release or larger initiatives that impact the Core Team. To nominate a topic for discussion, please leave a comment on this agenda with a summary of the topic, any relevant links that will help people get context for the discussion, and what kind of feedback you are looking for from others participating in the discussion.
PHP Extensions List – filter
@sirlouen raised a question about setting the filter PHP extension as default. See the Hosting Team Handbook.
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.
View Transitions to Core
- @westonruter kicked off the discussion by referencing plans to graduate the View Transitions plugin into core for WordPress 7.0, noting it pairs well with the admin refresh and introduces theme support for configuration.
- @mikewpbullet raised concerns about potential clashes with plugins or custom code and suggested a UI checkbox or update splash screen guidance, while @schmitzoide proposed a general “Activate Advanced Features” checkbox.
- @adamsilverstein noted performance plugins could add controls.
- @westonruter clarified that sites could opt out via code toggles like filters or theme support, aligning with WordPress philosophy of decisions over options.
- Update: See #64470 and #64471.
Speculative Loading and Caching Enhancements
- @westonruter highlighted ticket #64066 to shift default eagerness from conservative to moderate when caching is detected, aiding View Transitions by reducing link click delays.
- @mikewpbullet raised concerns about page caching rarely helping admin performance and noted that server-side caching via nginx or Varnish often runs without WordPress plugins that Site Health could detect.
- @westonruter explained that core’s Site Health test already accounts for proxy caches beyond just plugins and remains extensible for improvement.
- @adamsilverstein acknowledged that comprehensive coverage is impossible but emphasized WordPress’s advantage in rendering detection rules dynamically.
- @schmitzoide asked whether Site Health could diagnose performance issues.
- @westonruter added that Performance Lab includes additional tests for excessive blocking scripts and styles.
- @westonruter responded to @mikewpbullet‘s earlier admin concerns with two ideas: enabling bfcache in the admin for smooth back/forward transitions #63636, and considering speculative loading for admin menu items on sites with object caching enabled.
- @mikewpbullet raised concerns that users may not want cached admin pages when hitting back, and that object caching is unlikely to help with page load times in admin where slowness comes from 3rd party background requests.
Admin and Dashboard Performance
- @adamsilverstein shared that tackling the Dashboard landing page is a priority for the new year and mentioned an existing performance ticket. @westonruter later identified ticket #55344 and suggested the Dashboard could leverage preload links for commonly-used resources like the edit post screen assets.
- @westonruter connected this to ticket #57548 about retiring script and style concatenation in wp-admin, explaining the benefit would be effective preloading but noting that concatenation might still offer better performance without a primed cache, which requires benchmarking. This discussion led to exploring Compression Dictionaries, a newer capability that @westonruter explained allows browsers to reuse intersecting portions of different concatenated bundles.
- @mikewpbullet questioned the need given server-side Brotli compression already exists.
- @westonruter clarified this isn’t about PHP-based gzip but about the new compression dictionary transport standard that enables reusing cached bundle portions across different pages, particularly beneficial for block themes enqueue block styles on-demand based on page content, and in WordPress 6.9 this also applies to classic themes, so compression dictionaries would allow concatenating these varying bundles while enabling browsers to cache and reuse individual styles across pages with different bundles, significantly reducing CSS downloads for both logged-in and logged-out users.
Roadmap and Future Planning
- @schmitzoide asked about the team’s roadmap. @westonruter linked to the 2024 roadmap and explained this meeting serves to shape 2026 priorities, noting they’ll likely use milestoned Trac tickets rather than a full roadmap post given fewer active contributors currently.
- @schmitzoide asked about graduating additional Performance Lab features and shared plans to propose ideas from block theme optimization work via repository tickets. @adamsilverstein encouraged opening issues for any PerfNow conference ideas worth experimenting with in the plugin.
- @sirlouen asked about integrating performance testing activities similar to Gutenberg’s approach, including GitHub Actions tagging and handbook expansion. @westonruter welcomed aligning testing strategies with other core teams in the new year.
Our next chat will be held on Tuesday, December 30, 2025 at 16:00 UTC in the #core-performance channel in Slack.
]]>Now that the release cycle is complete, you’re invited to reflect and share your thoughts on the release cycle, release processes, release squad, or whatever else is on your mind. Feedback loops are critical to learning what works and what doesn’t so that the teams involved can iterate on the processes to improve for future releases.
Everyone is welcome to submit feedback about the release using this form, even contributors who did not contribute directly to the release itself.
A member of the community that casually observes a release cycle will have very different thoughts and opinions than someone who was heavily involved on a weekly or daily basis. The more viewpoints and backgrounds represented within this feedback loop the better. So please take a moment to complete the form or leave public feedback in the comments below.
Please note: the survey is not anonymous, but anything submitted will be anonymized before being shared in a post summarizing the results. Your wordpress.org username is required just case the person processing the responses needs to reach out to you for further clarification.
The form and comments will be open until January 15, 2026. A follow-up post with the collected, anonymized results will be published shortly after.
Again, thank you for your contributions to 6.9 “Gene,” and for taking the time to provide valuable feedback to help make future releases even better!
Props to @amykamala, @desrosj for the peer review.
]]>
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 block 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-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:
- Email notifications for Notes: Collaborators can now get notified when someone leaves a note on their content. No more checking back constantly.
- Breadcrumbs improvements: The Breadcrumbs block now supports alignment and handles paged comments properly.
- Navigation overlays: A new overlay template part area gives you more flexibility in how navigation menus behave.
- Better offline handling: When you lose connection, the editor now gives you clearer, more helpful error messages.
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
Data Layer
- wordpress/data: Migrate
index.jstoindex.ts. (73597)
DataViews
- Add min/max validation support to DataForm inputs. (73465)
- Field API: Display formats for
numberandintegertypes. (73644) - Try using 24px padding for consistency across different uses. (73334)
- Update operator labels and deprecate the
isNotAll. (73671)
Internationalization
- Fields: Update “Trash” translation 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 i18n support for math block error messages. (73643)
- Breadcrumbs: Improve home page and front page handling. (73487)
- Classic Block: Restore HTML 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 avatar component. (67494)
- Post Title: Add fallback
no titlein 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 shortcode transform. (73748)
Command Palette
- Commands: Restrict editor UI 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 plugin: Override core 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)
Accessibility
Block Editor
- Fix block toolbar icon CSS 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
- PHP-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)
Navigation Menus
- 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 JSON schema: Add visibility key to supports definition. (73612)
- Docs: Add “Migrating Blocks for iframe 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
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
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)
- Meta: Add Carlos Bravo to mailmap. (73840)
- Meta: Introduce .mailmap for transforming author names. (72412)
- Scripts: Update license checker to ignore 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 sidebar’ 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
Snackbarcomponent. (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.
]]>
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 
Gutenberg 22.3 has been released!
Gutenberg 22.3 is now available for download!
WordCamp Asia 2026 Contributor Day: Call for table leads
Contributors interested in helping with the Core 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 beta 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.
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 ticket 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 beta 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 Core Team. To nominate a topic for discussion, please leave a comment on this agenda with a summary of the topic, any relevant links that will help people get context for the discussion, and what kind of feedback you are looking for from others participating in the discussion.
WordCamp Asia 2026 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.
WordPress Performance Trac tickets
- @westonruter shared that he is still working through fixes for a CSS issue introduced in WordPress 6.9 related to loading separate block styles on demand in PR #10601.
Performance Lab Plugin (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 URL Metric collection for Optimization Detective
- @spacedmonkey wondered whether the team could begin running the performance core e2e tests against Safari now that the browser includes this capability.
- @westonruter added that he is interested in exploring Compression Dictionaries after learning they can be implemented in PHP 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.
]]>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 block 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 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 meta 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. Plugin authors will want to know what work, if any, is required to ensure their code supports real-time collaboration.
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 trunk 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.
]]>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 PHP 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.
CSS Issues from Loading Separate Block 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 core committer @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 plugin, 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 filter. This change was not previously publicized, but the linked dev note 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.
]]>How to interact with this post
Please do not use this as a spot to request folks to work on features. GitHub and Trac 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 Gutenberg or trunk.
Table of Contents
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 UI 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 block 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 widget for recent notes.
- More notification options (responses, follow a note, mentions).
- Contributors: @adamsilverstein, @jeffpaul, @mamaduka
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 extensible 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
Revisions
- 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 API
- Link: Github issue
- Key considerations:
- Hybrid abilities.
The client side package.- Driven by Fields API definitions.
- Querying and filtering functionality for the abilities.
- Implement some of the abilities outlined in WordPress Core Abilities.
- Command palette and UI:
- Differentiation between commands.
- Ability to support two stages of a command.
- Contributors: @jorgefilipecosta @gziolo @senadir @youknowriad
Upgrade to React 19
- Link: Github issue
- Key considerations:
- There’s a path for the block editor in the mobile apps that should remove this dependency blocker.
- 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.
Migration 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 capabilities using a uniform API.
- Integration with Abilities API.
- Strictly no providers included in core.
- Decide nomenclature.
- Ideally, the minimum PHP 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 plugin authors to add their pages there.
Opinionated build tool for plugins.- Update Gutenberg – Core backport flow.
- Contributors: @youknowriad
Shortblocks
- Links: Bits as dynamic tokens; Bits: Introduce the ability to store and render bits, Rich text: try BITS with block binding API, Introduce parser for dynamic token system.
- Key considerations:
- Decide name for the feature (shortblocks, inline blocks, bits).
- Determine best syntax.
- Connect with bindings UI.
- Support for rich text autocomplete.
- Contributors: @dmsnell, @ellatrix, @jonsurrell
Block bindings iterations
- Link: GitHub issue
- Key considerations:
- Open up “Pattern Overrides” and therefore intern block bindings to custom dynamic blocks.
- Filter available source items for a given attribute by format.
- Align with Fields API as a requirement.
- Contributors: @bernhard-reiter
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
- Link: GitHub issue
- Key considerations:
- Better insertion.
- Pattern editing and ContentOnly interactivity.
- Better presentation of “bound” page items.
- Contributors: @get_dave, @jeryj
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)
- Link: GitHub issue
- Key considerations:
- Ensure proper discoverability to enter/exit.
- Ensure it works well with synced patterns.
- Contributors: @aaronrobertshaw, @andrewserong, @isabel_brison, @ramonopoly @talldanwp.
Improve template management
- Link: GitHub PR
- Key considerations:
- Direction and UX is still TBD and needs more exploration.
- Retain access to template parts across theme switches.
- Contributors: @ellatrix @scruffian.
Responsive editing mode
- Link: GitHub issue
- Key considerations:
- Toggle to engage responsive editing mode.
- Block visibility i2: add ability to hide blocks based on screen size.
- Allow style changes to be saved and retrieved for different breakpoints.
- Allow customization of hardcoded breakpoints.
- Contributors: @matveb @ramonopoly
Block supports and design tools:
- Link: GitHub issue
- Key considerations:
- Add text line indent support. GitHub PR.
- Add gradient support to text color options.
- Add height block support to dimension .
- Styles support for text shadow. GitHub PR.
- Support for text alignment with justify support.
- Allow Video backgrounds to be ‘Fixed’.
- Balanced line wrap.
- Text columns. GitHub issue; GitHub issue.
- Support aspect ratio on wide and full images.
- Contributors: TBD, @aaronrobertshaw @matveb @youknowriad @wildworks
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
- Link: GitHub Issue; GitHub PR
- Contributors: @matveb
Modernize Code editor + Code block
- Link: GitHub link
- Contributors: @jonsurrell, @westonruter
Lazy load the Classic block
- Link: TBD
- Key considerations:
- The main aim is performance—avoid loading TinyMCE by default if not needed.
- If possible, address moving the freeform block to a separate package in this work too.
- Contributors: @tyxla
Leverage iAPI for instant search block & submit comments without full page refresh
- Links: Instant Search, submit comments without requiring a full-page refresh.
- Contributors: TBD
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
- Link: GitHub issue
- Contributors: @mikachan
Release the Table of Contents block
- Link: GitHub issue
- Contributors: TBD
Playlist block
- Link: GitHub issue
- Contributors: @scruffian
Slider block
- Link: GitHub issue, GitHub issue, GitHub issue
- Contributors: @lstraczynski, @karolmanijak
Dialog block
- Link: GitHub issue
- Contributors: TBD
Breadcrumb block
- Link: GitHub Issue
- Team: @ntsekouras
Add more dynamic URLs via block bindings to Buttons block and Image block
- Link: GitHub issue, API shape
- Team: TBD
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
- Link: GitHub issue, GitHub PR
- Contributor: @wildworks
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 sidebar inspector and transforms.
- Contributor: @matveb
Aim to stabilize grid block
- Link: GitHub issue
- Contributor: @isabel_brison
Media
Client side media work
- Link: GitHub issue
- Contributors: @adamsilverstein, @ramonopoly
Media editor
- Link: Iteration issue
- Contributors: @aaronrobertshaw, @andrewserong, @isabel_brison, @ramonopoly, @talldanwp
Designers looking across all these projects: @fcoveram, @joen, @jameskoster, @mattmiklic.
]]>
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.
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 Core blog to share the current status.
Missing “Needs Patch / 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.
WordPress 6.9 introduced a fix for adjacent post navigation when posts have identical publication dates. While this resolved a long-standing bug, 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 filter to replace the current post’s date with a different post’s date.
Here’s what was happening:
- Plugin hooks into
get_previous_post_wherefilter. - Plugin does string replacement: replaces
$current_post->post_datewith$target_product->post_date. - Problem: The new
WHEREclause structure includes the post date in TWO places (date comparisonAND IDcomparison). - Simple string replacement modified the date comparison but left the ID comparison unchanged.
- Query returns the same post repeatedly → infinite 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:
- Uses the
get_{$adjacent}_post_wherefilter. - Performs string replacement on post dates in the
WHEREclause. - Changes which post is considered “adjacent” (like navigating between custom post types instead).
To test if your plugin works correctly with WordPress 6.9:
- Create 3-4 posts with identical publication dates (bulk publish drafts).
- Navigate between them using your plugin’s adjacent post functionality.
- Verify that navigation moves to different posts (not the same post repeatedly).
- 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:
- Reach out to known plugins using the
get_{$adjacent}_post_wherefilter. - Include a migration guidance in the 6.9 field guide (as applicable).
- 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:
- Check Trac ticket #64390 for the latest updates.
- Ask questions in the #core channel on WordPress Slack.
- 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.
]]>