The WordPress coreCoreCore is the set of software required to run WordPress. The Core Development Team builds WordPress. development team builds WordPress! Follow this site for general updates, status reports, and the occasional code debate. There’s lots of ways to contribute:
Found a bugbugA bug is an error or unexpected result. Performance improvements, code optimization, and are considered enhancements, not defects. After feature freeze, only bugs are dealt with, with regressions (adverse changes from the previous version) being the highest priority.?Create a ticket in the bug tracker.
On November 19th, a group of community members from the #content-creators channel to talk about content creation across different mediums (Twitch, YouTube, Podcast, News/Newsletter). We covered a wide range of topics from short form content to how to stay close to what matters to how to reach outside of the “WordPress bubble”. Shout out to @raewrites@mattmm@markjszymanski@welcher who joined to represent different content creators working in different mediums for this discussion and for everyone else who joined in.
Recording
Notes
These notes were powered by AI (mostly) with some manual edits where needed.
Panel intros:
Ryan Welcher is a developer advocate at Automattic focused on live coding streams, primarily on Twitch with repurposed content on YouTube, specializing in blockBlockBlock is the abstract term used to describe units of markup that, composed together, form the content or layout of a webpage using the WordPress editor. The idea combines concepts of what in the past may have achieved with shortcodes, custom HTML, and embed discovery into a single consistent API and user experience. development. Rae runs The Repository, a long-form WordPress news site that grew from a newsletter after a career in newspaper journalism. Matt Medeiros founded the Matt Report podcast and now runs The WP Minute, expanding into courses and community. Mark is a video-first creator and former agency owner who makes YouTube tutorials and commentary for freelancers and agencies building with WordPress.
Content ideation and performance:
The discussion centered on audience-led topics and real-world problems. Live streams are framed with loose themes but often pivot based on audience questions; deep technical dives into emerging WordPress features perform strongly. Longer-form reporting grew from gaps in coverage and community encouragement; legal developments, sustainability, business operations, and upbeat stories resonate. Clear, goal-oriented tutorials rooted in client work and viewer requests drive consistent results. AI coverage is polarizing, with audiences split between enthusiasm and fatigue.
Reaching beyond WordPress:
For some creators, WordPress is positioned as one option among many, with cross-ecosystem collaborations (e.g., Ghost, Wix, Webflow) broadening reach. Pairing AI with WordPress draws wider tech audiences, and WooCommerce presents under-tapped opportunities compared with Shopify-focused communities. Engaging outside the “insider” crowd, especially in critical forums like discord or facebook groups, surfaces real pain points that can be addressed through educational content to reframe contentious changes. Short-form can serve as a top-of-funnel to long-form education but needs tailored hooksHooksIn WordPress theme and development, hooks are functions that can be applied to an action or a Filter in WordPress. Actions are functions performed when a certain event occurs in WordPress. Filters allow you to modify certain functions. Arguments used to hook both filters and actions look the same..
Creative cross-platform strategies:
A TikTok case showed how an original, community-reusable audio can catalyze growth and partnerships; the principle is to create native artifacts that spark adoption and then route attention to deeper content. Extended short-form experiments suggest shorts work best as concise highlights that drive to longer, educational videos.
Creator community development:
The vision for the Content Creators Channel is a transparent hub for early product signals, draft sharing, feedback loops, and celebrating collaborations to improve accuracy, timing, and adoption. Identified gaps include unclear onboarding and norms for multi-hat creators, and a desire for structured prompts (e.g., draft-sharing cadences, collaboration requests) plus steady progress updates around upcoming releases. Anne will follow up here.
Staying current vs. getting out of touch:
Moving into roles away from daily delivery of WordPress projects can erode “in the trenches” experience; solving community-submitted issues helps counter this drift. Balancing content creation with client or product work maintains credibility and fresh insights, with recognition that pure info products have a shelf life while podcasts and product involvement keep creators close to practitioner needs.
GutenbergGutenbergThe Gutenberg project is the new Editor Interface for WordPress. The editor improves the process and experience of creating new content, making writing rich content much simpler. It uses ‘blocks’ to add richness rather than shortcodes, custom HTML etc. https://wordpress.org/gutenberg/ 22.1 has been released!
WordPress 6.9 Release Candidaterelease candidateOne of the final stages in the version release cycle, this version signals the potential to be a final release to the public. Also see alpha (beta). 2 is now available!
WordPress 6.9 Dev Notesdev noteEach 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.
For more detailed information, see the following WordPress 6.9 Dev Notes:
WordPress 6.9 is planned for December 2, 2025. Release Candidate 3 is planned for November 25.
Call for Testing
The Test Team invites testing and feedback on the following upcoming blockBlockBlock is the abstract term used to describe units of markup that, composed together, form the content or layout of a webpage using the WordPress editor. The idea combines concepts of what in the past may have achieved with shortcodes, custom HTML, and embed discovery into a single consistent API and user experience. editor features:
CoreCoreCore is the set of software required to run WordPress. The Core Development Team builds WordPress. Block Decisions
The discussion focused on how decisions are made about which new blocks should be added to Core. @elrae raised concerns that there is no clear standard, and that blocks like the Math block benefit only a very small group of users. Others argued that Core blocks improve consistency, accessibilityAccessibilityAccessibility (commonly shortened to a11y) refers to the design of products, devices, services, or environments for people with disabilities. The concept of accessible design ensures both “direct access” (i.e. unassisted) and “indirect access” meaning compatibility with a person’s assistive technology (for example, computer screen readers). (https://en.wikipedia.org/wiki/Accessibility), and reliability across websites. Everyone agreed that clearer and more transparent guidelines are needed to determine which blocks are truly useful and worth maintaining in the long run.
“What’s new in GutenbergGutenbergThe Gutenberg project is the new Editor Interface for WordPress. The editor improves the process and experience of creating new content, making writing rich content much simpler. It uses ‘blocks’ to add richness rather than shortcodes, custom HTML etc. https://wordpress.org/gutenberg/…” posts (labeled with the #gutenberg-new tag) are posted following every Gutenberg release on a biweekly basis, showcasing new features included in each release. As a reminder, here’s an overview of different ways to keep up with Gutenberg and the Editor.
This release focuses on expanding blockBlockBlock is the abstract term used to describe units of markup that, composed together, form the content or layout of a webpage using the WordPress editor. The idea combines concepts of what in the past may have achieved with shortcodes, custom HTML, and embed discovery into a single consistent API and user experience.capabilitiescapabilityA capability is permission to perform one or more types of task. Checking if a user has a capability is performed by the current_user_can function. Each user of a WordPress site might have some permissions but not others, depending on their role. For example, users who have the Author role usually have permission to edit their own posts (the “edit_posts” capability), but not permission to edit other users’ posts (the “edit_others_posts” capability)., enhancing the editor UXUXUser experience, and performance improvements. New features include the new coreCoreCore is the set of software required to run WordPress. The Core Development Team builds WordPress./tabs block for tabbed content, enabling JavaScriptJavaScriptJavaScript or JS is an object-oriented computer programming language commonly used to create interactive effects within web browsers. WordPress makes extensive use of JS for a better user experience. While PHP is executed on the server, JS executes within a user’s browser. https://www.javascript.com/. and CSSCSSCascading Style Sheets. editing added to the HTML block, and image prefetching when expanding images in the editor. Other updates include many theme/color tweaks, DataViews and DataForm refinements, collaboration improvements, accessibilityAccessibilityAccessibility (commonly shortened to a11y) refers to the design of products, devices, services, or environments for people with disabilities. The concept of accessible design ensures both “direct access” (i.e. unassisted) and “indirect access” meaning compatibility with a person’s assistive technology (for example, computer screen readers). (https://en.wikipedia.org/wiki/Accessibility) and performance optimizations, and numerous bugbugA bug is an error or unexpected result. Performance improvements, code optimization, and are considered enhancements, not defects. After feature freeze, only bugs are dealt with, with regressions (adverse changes from the previous version) being the highest priority. fixes and documentation updates.
New Tabs block
As the name suggests, the new Tabs block allows you to add tabbed content to your posts, pages, and templates.
Enable the Blocks: add experimental blocks setting to test the tabs block.
HTMLHTMLHyperText Markup Language. The semantic scripting language primarily used for outputting content in web browsers. block updates
Add a context menu when right-clicking on the table headerHeaderThe header of your site is typically the first thing people will experience. The masthead or header art located across the top of your page is part of the look and feel of your website. It can influence a visitor’s opinion about your content and you/ your organization’s brand. It may also look different on different screen sizes.. (73104)
HTML Block: Add JSJSJavaScript, a web scripting language typically executed in the browser. Often used for advanced user interfaces and behaviors./CSS editing. (73108)
Paragraph: Migrate to text-align block support. (73111)
Notes: Add keyboard support for tree navigation. (73136)
Notes: Disable “Add note” button in Distraction free mode. (72954)
Notes: Remove the pin/unpin button from the sidebarSidebarA sidebar in WordPress is referred to a widget-ready area used by WordPress themes to display information that is not a part of the main content. It is not always a vertical column on the side. It can be a horizontal rectangle below or above the content area, footer, header, or any where in the theme. header. (72825)
Patterns
Hide toolbar slots for contentOnly pattern wrappers. (73182)
Starter content: Change alignment and copy. (72829)
contentOnly patterns: Mark patterns as contentOnly by adding metadata.patternName to the root block. (72988)
Card Component Padding System EnhancementenhancementEnhancements are simple improvements to WordPress, such as the addition of a hook, a new feature, or an improvement to an existing feature.. (72511)
TextareaControl: Add min-height to textarea. (72867)
Colors
ColorPicker: Support pasting whole color values. (73166)
Synced Patterns
Update synced pattern language from “Detach” to “Disconnect pattern”. (73105)
Extensibility
Term Name: Add levelOptions attribute to control available heading levels. (73005)
Write mode
Use color panel for contentOnly pattern editing. (71982)
Block Editor
BlockVariationTransforms: Refactor DropdownMenu with Menu. (71938)
Bug Fixes
Fix unresolvable typedefs in dependency-extraction-webpack-pluginPluginA plugin is a piece of software containing a group of functions that can be added to a WordPress website. They can extend functionality or add new features to your WordPress websites. WordPress plugins are written in the PHP programming language and integrate seamlessly with WordPress. These can be free in the WordPress.org Plugin Directory https://wordpress.org/plugins/ or can be cost-based plugin from a third-party. (72807)
Math format: Force LTR direction in RTL languages. (72901)
Math format: Remove empty format on serialise. (73143)
Template activation: Disallow editing/trashing of non-database templates. (72790)
Template activation: Inserting template through /templates should always result in active template. (72770)
Template activation: Redirect to ‘Create Templates’ after duplication. (72727)
Template activation: Skip gutenberg_get_registered_block_templates query when no slugs are left to find. (72795)
Theme: Fix Windows build using cross-env for environment variables. (72944)
block-editor: Remove types from package.jsonJSONJSON, or JavaScript Object Notation, is a minimal, readable format for structuring data. It is used primarily to transmit data between a server and web application, as an alternative to XML. exports. (72817)
i18ni18nInternationalization, 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.: Use _x() for Template Activation labels. (72928)
Collaboration
Block Notes: Adjust note date tooltip position. (72843)
Change sidebar title – Change Notes to All notes. (72885)
Notes: Fix avatarAvatarAn 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. image size in mobile layout. (73008)
Notes: Fix first note creation with pinned sidebar. (73164)
Fix: Don’t load fit text front end scripts on the editor. (72842)
Fix: Fit Text flash during the binary search on the initial enabling. (72788)
Fix: Fit text may not update when being grouped in a smaller container. (73021)
Fix: Make fit text work with the interativity APIAPIAn API or Application Programming Interface is a software intermediary that allows programs to interact with each other and share data in limited, clearly defined ways.. (72923)
Update: Use a bigger max fit text font size. (73067)
Stretch text and stretch heading variation. (73056)
DataViews
DataViews Table – only output aria-label for media when item is clickable. (73034)
Fix: DataViews modal actions in list layout. (72793)
Use local time in summary filterFilterFilters are one of the two types of Hooks https://codex.wordpress.org/Plugin_API/Hooks. They provide a way for functions to modify data of other functions. They are the counterpart to Actions. Unlike Actions, filters are meant to work in an isolated manner, and should never have side effects such as affecting global variables and output. and default render for datetime fields. (72756)
Theme: Disable bgramp tests to fix trunktrunkA directory in Subversion containing the latest development code in preparation for the next major release cycle. If you are running "trunk", then you are on the latest revision. failures. (73122)
Command Palette
Commands: Add edit template if user has proper caps. (73087)
Decode HTML entities in menu URLURLA specific web address of a website or web page on the Internet, such as a website’s URL www.wordpress.org. (72898)
Design Tools
Border Panel: Decode values so that border radius presets are properly handled in global styles. (73072)
Border radius presets: Support mixed values in the rangecontrol slider. (73033)
Block API
Classic Block: Disable lock, renaming, blockVisibility, html support. (72812)
Prevent Esc from executing changes in categoryCategoryThe 'category' taxonomy lets you group posts / content together that share a common bond. Categories are pre-defined and broad ranging. and archive widgets. (72889)
Performance
Move PatternOverrideToolbarIndicator functionality into BlockToolbar. (72935)
Theme: Add caching for theme color ramp builders. (72796)
Theme: Generate default ramps at compile time. (72847)
Theme: Inline values for primitive tokens in CSS output. (72890)
Theme: Optimize color generating algorithm. (72883)
Theme: Use logarithms for contrast difference. (73097)
Block Library
Add Image Prefetching for Click to expand Images. (61107)
Disable TinyMCE: Handle old core/freeform syntax in editor. (72967)
Media
Add Upload button to experimental media modal and always allow multiple uploads. (73125)
Components
UIUIUser interface: Implement Box component as part of new UI package. (72984)
Patterns
contentOnly patterns: Allow re-entry into contentOnly mode after ‘Edit contents’. (72044)
Documentation
Add PHPPHPThe web scripting language in which WordPress is primarily architected. WordPress requires PHP 7.4 or higher function prefixing documentation. (72525)
Automated testing: Add tests to ensure pagination data when fetching intermediate results. (71613)
Block Bindings: Add unit testunit testCode written to test a small piece of code or functionality within a larger application. Everything from themes to WordPress core have a series of unit tests. Also see regression. coverage for sources. (72799)
Build: Remove typechecking from precommit hooksHooksIn WordPress theme and development, hooks are functions that can be applied to an action or a Filter in WordPress. Actions are functions performed when a certain event occurs in WordPress. Filters allow you to modify certain functions. Arguments used to hook both filters and actions look the same.. (72955)
Pin full-length commit SHA for 3rd-party actions. (72855)
WordPress 6.9 brings extensive accessibilityAccessibilityAccessibility (commonly shortened to a11y) refers to the design of products, devices, services, or environments for people with disabilities. The concept of accessible design ensures both “direct access” (i.e. unassisted) and “indirect access” meaning compatibility with a person’s assistive technology (for example, computer screen readers). (https://en.wikipedia.org/wiki/Accessibility) improvements across WordPress CoreCoreCore is the set of software required to run WordPress. The Core Development Team builds WordPress. and GutenbergGutenbergThe Gutenberg project is the new Editor Interface for WordPress. The editor improves the process and experience of creating new content, making writing rich content much simpler. It uses ‘blocks’ to add richness rather than shortcodes, custom HTML etc. https://wordpress.org/gutenberg/, continuing the goals to meet web content accessibility standards throughout WordPress and make it easier to author accessible content. These updates include changes to administration, customization, login and registration, bundled themes, and the blockBlockBlock is the abstract term used to describe units of markup that, composed together, form the content or layout of a webpage using the WordPress editor. The idea combines concepts of what in the past may have achieved with shortcodes, custom HTML, and embed discovery into a single consistent API and user experience. editor.
Core
Improvements to WordPress Core include 33 accessibility enhancements and bugbugA bug is an error or unexpected result. Performance improvements, code optimization, and are considered enhancements, not defects. After feature freeze, only bugs are dealt with, with regressions (adverse changes from the previous version) being the highest priority. fixes. Major changes include numerous new or improved screen reader notifications, a complete update of CSSCSSCascading Style Sheets. generated content to ensure no excess content is spoken, and code changes to ensure proper semantics and improved focus management.
Administration
#47101 – Improve accessibility when deleting terms via AJAX: color contrast & spoken message.
#48655 – Improve the “Add-item” function in menus (esp. for pages)
#63118 – Hide “Skip to Toolbar” shortcut on small screens within adminadmin(and super admin)
#63126 – Theme preview model and Media library model having issues with Shift/Ctrl + Shift next and previous arrows.
#63449 – Low color contrast for <code> elements in description text on Settings > General page
#63546 – Fix unclosed li element in pluginPluginA plugin is a piece of software containing a group of functions that can be added to a WordPress website. They can extend functionality or add new features to your WordPress websites. WordPress plugins are written in the PHP programming language and integrate seamlessly with WordPress. These can be free in the WordPress.org Plugin Directory https://wordpress.org/plugins/ or can be cost-based plugin from a third-party-editor.php
#63603 – Replace deprecated / non-standard CSS for `speak` and `aural`
#63723 – On the Add New plugin page, put the Add Plugins screen description above the filterFilterFilters are one of the two types of Hooks https://codex.wordpress.org/Plugin_API/Hooks. They provide a way for functions to modify data of other functions. They are the counterpart to Actions. Unlike Actions, filters are meant to work in an isolated manner, and should never have side effects such as affecting global variables and output. menu
CustomizerCustomizerTool built into WordPress core that hooks into most modern themes. You can use it to preview and modify many of your site’s appearance settings.
#42078 – Customize: fix the color hue picker HTMLHTMLHyperText Markup Language. The semantic scripting language primarily used for outputting content in web browsers. and accessibility
#47579 – Customizer “Select logo” and “Select site icon” look like drop areas, but are buttons.
#63011 – Customizer: The back button is not keyboard focusable
#63832 – Loss of focus when setting or changing the Site Logo or Site Icon in Customizer
Editing
#63460 – Increase color contrast for embed template
#61959 – Enhance Support for `popovertarget` and `popover` Attributes in Native Browser Popover APIAPIAn API or Application Programming Interface is a software intermediary that allows programs to interact with each other and share data in limited, clearly defined ways.
Login and Registration
#63281 – Password field has wrong focus on installations
#63286 – User profile first name, last name, nickname and email fields should have autocomplete attributes for accessibility
#63114 – No screen reader announcements for upload image errors
#63238 – Remove `target=”_blank”` from Browser Uploader Link
#63239 – Button focus visibility issue in media upload page
#63571 – Excessive Spacing Between Right SidebarSidebarA sidebar in WordPress is referred to a widget-ready area used by WordPress themes to display information that is not a part of the main content. It is not always a vertical column on the side. It can be a horizontal rectangle below or above the content area, footer, header, or any where in the theme. Items in Edit Media Screen on Mobile View
#63973 – Add Media Button missing aria-haspopup and aria-controls
Miscellaneous
#40428 – Introduce best practices to hide CSS generated content from assistive technologies
#44267 – Privacy Request List Table: A way to show the time of request when it’s older than 24 hours.
#63030 – Update CSS for `::-moz-placeholder` color
#63620 – Remove translator comments when hidden text matches visible text
#63950 – Tabbing through database upgrade screen shows “WordPress” text over logo
Bundled Themes
#10219 – “Older Entries” and “Newer Entries” links are wrong when entries displayed in ascending order
#44656 – Multiple themes: Empty site title leaves empty anchor tagtagA directory in Subversion. WordPress uses tags to store a single snapshot of a version (3.6, 3.6.1, etc.), the common convention of tags in version control systems. (Not to be confused with post tags.) in headerHeaderThe header of your site is typically the first thing people will experience. The masthead or header art located across the top of your page is part of the look and feel of your website. It can influence a visitor’s opinion about your content and you/ your organization’s brand. It may also look different on different screen sizes.
#52116 – Twenty Twenty: Menu + Search can cause a scroll jump on close
#63875 – Twenty Twenty-Two and Twenty Twenty-Five: <pre> tag overflows container, causing horizontal scroll
Widgets
#63531 – CategoryCategoryThe 'category' taxonomy lets you group posts / content together that share a common bond. Categories are pre-defined and broad ranging. dropdown does not meet WCAGWCAGWCAG is an acronym for Web Content Accessibility Guidelines. These guidelines are helping make sure the internet is accessible to all people no matter how they would need to access the internet (screen-reader, keyboard only, etc) https://www.w3.org/TR/WCAG21/. 2.2 A on windows and some linux systems
Gutenberg
Changes within Gutenberg include 44 accessibility fixes and enhancements, including the addition of new blocks and the block Notes feature that have undergone accessibility reviews. Numerous fundamental components have had accessibility improvements to ensure that interfaces across the editor are more consistent and understandable.
Blocks
#68662 – Cover: Fix placeholder color options keyboard accessibility
#68909 – Site Title: Fix logic for ‘aria-current’ attribute
#69628 – Site Title: Prevent saving and rendering a value made of only spaces
#69689 – Navigation Link, Navigation Submenu: Remove the title attribute controls
#69821 – Social Icons: Remove custom placeholder state
#70139 – Button Block: Add HTML Element selection in Advanced settings
#70192 – Button: Avoid focus loss when unlinking using keyboard
#70210 – Columns block: Don’t use ToolsPanelItem for Columns setting
#70730 – a11yAccessibilityAccessibility (commonly shortened to a11y) refers to the design of products, devices, services, or environments for people with disabilities. The concept of accessible design ensures both “direct access” (i.e. unassisted) and “indirect access” meaning compatibility with a person’s assistive technology (for example, computer screen readers). (https://en.wikipedia.org/wiki/Accessibility): Comments Pagination Nav Wrapper
#73177 – Fix a11y of descriptions and alerts for “InvalidinvalidA resolution on the bug tracker (and generally common in software development, sometimes also notabug) that indicates the ticket is not a bug, is a support request, or is generally invalid.” Nav Items
Components
#67792 – Improve the EntitiesSavedStates modal dialog design and labeling
#69011 – Remove non translatable additional info from font size picker visual label and improve labeling
#69441 – ARIA: Fix invalid `DropdownMenu` children structure
#68633 – Global Styles: Prevent Unwanted ItemGroup List Rendering in Border Panel
#68542 – Button: Update hover styles to account for pressed state for `tertiary button`
#69609 – ActionModal: Add support for customisable `focusOnMount`
#68481 – Fix CSS classes for the post editor iframeiframeiFrame is an acronym for an inline frame. An iFrame is used inside a webpage to load another HTML document and render it. This HTML document may also contain JavaScript and/or CSS which is loaded at the time when iframe tag is parsed by the user’s browser. body.
#68975 – Close patterns modal on insertion and focus on inserted pattern
When creating and editing menus in the Menus interface, searching for posts and pages has historically used a full text search as a query. This can make some pages difficult to find, if they use a title that primarily uses common words in the site content.
In WordPress 6.9, the search query arguments have been changed to limit searches to only the post title. This is intended to make it easier to find the post you’re looking for in search results.
The query change adds the argument search_columns with the value array( ‘post_title’ ) to the search. The columns correspond to the database columns in the wp_posts table.
To facilitate sites that may need the previous search logic, a filterFilterFilters are one of the two types of Hooks https://codex.wordpress.org/Plugin_API/Hooks. They provide a way for functions to modify data of other functions. They are the counterpart to Actions. Unlike Actions, filters are meant to work in an isolated manner, and should never have side effects such as affecting global variables and output. has been added to easily modify the search query.
/** * Filter the menu quick search arguments. * * @since 6.9.0 * * @param array $args { * Menu quick search arguments. * * @type boolean $no_found_rows Whether to return found rows data. Default true. * @type boolean $update_post_meta_cache Whether to update post meta cache. Default false. * @type boolean $update_post_term_cache Whether to update post term cache. Default false. * @type int $posts_per_page Number of posts to return. Default 10. * @type string $post_type Type of post to return. * @type string $s Search query. * @type array $search_columns Which post table columns to query. * } */ $query_args = apply_filters( 'wp_ajax_menu_quick_search_args', $query_args );
To restore the previous behavior, you can unset the additional argument:
When a string passed to the esc_url() and esc_url_raw() functions does not include a protocol (https://, http://, etc.), WordPress will prepend http:// to the URLURLA specific web address of a website or web page on the Internet, such as a website’s URL www.wordpress.org string before further processing and returning it. This is a reasonable fallback behavior, but there is currently no way to override the default protocol with another (such as https:// for social media profiles).
Starting in WordPress 6.9, the esc_url() and esc_url_raw() functions will now prepend https:// to the URL if it does not already contain a scheme and the first item in the $protocols array is 'https'. The current behavior (prepending http://) will continue when any other value is listed first within the $protocols array.
<?php /* * Recommended approach for defaulting to 'https' while maintaining * backward compatibility. * * Example: no protocol with $protocols and 'https' first. * * Output: * - WordPress >= 6.9: 'https://profiles.wordpress.org' * - WordPress < 6.9: 'http://profiles.wordpress.org' */ echo esc_url( 'profiles.wordpress.org', array( 'https', 'http' ) );
By including 'https' first and then 'http' in the array:
WordPress 6.9 would prepend https:// to an incomplete URL.
Older WordPress versions would continue to prepend http://, which remains the default scheme when the $protocols argument is not defined. If the array only contains 'https', esc_url() would return an empty string because http is not included in the list of valid protocols.
Additional examples of output include:
<?php /* * Example 1: no protocol included in $url. * * Output: * - WordPress >= 6.9: 'http://profiles.wordpress.org' * - WordPress < 6.9: 'http://profiles.wordpress.org' */ echo esc_url( 'profiles.wordpress.org' ); /* * Example 2: 'http' protocol included in $url. * * Output: * - WordPress >= 6.9: 'http://profiles.wordpress.org' * - WordPress < 6.9: 'http://profiles.wordpress.org' */ echo esc_url( 'http://profiles.wordpress.org' ); /* * Example 3: 'https' protocol included in $url. * * Output: * - WordPress >= 6.9: 'https://profiles.wordpress.org' * - WordPress < 6.9: 'https://profiles.wordpress.org' */ echo esc_url( 'https://profiles.wordpress.org' ); /* * Example 4: no protocol with $protocols and 'http' first. * * Output: * - WordPress >= 6.9: 'http://profiles.wordpress.org' * - WordPress < 6.9: 'http://profiles.wordpress.org' */ echo esc_url( 'profiles.wordpress.org', array( 'http', 'https' ) ); /* * Example 5: no protocol in $url with $protocols and no 'http'. * * Output: * - WordPress >= 6.9: 'https://profiles.wordpress.org' * - WordPress < 6.9: '' * * Note: if 'http' is not included in the $protocols array, * the fully escaped URL will not pass the final check that * a valid, allowed protocol is included. */ echo esc_url( 'profiles.wordpress.org', array( 'https' ) ); /* * Example 6: protocol within $url missing within $protocols. * * Output for all: * - WordPress >= 6.9: '' * - WordPress < 6.9: '' * * Note: if 'http' is not included in the $protocols array, * the fully escaped URL will not pass the final check that * a valid, allowed protocol is included. */ echo esc_url( 'https://profiles.wordpress.org', array( 'http' ) ); echo esc_url( 'http://profiles.wordpress.org', array( 'https' ) ); echo esc_url( 'mailto:indana@jon.es', array( 'https', 'http' ) );
The live meeting will focus on the discussion for upcoming releases, and have an open floor section.
The various curated agenda sections below refer to additional items. If you have ticketticketCreated for both bug reports and feature development on the bug tracker. requests for help, please continue to post details in the comments section at the end of this agenda or bring them up during the dev chat.
Announcements 📢
WordPress 6.9 Release Candidaterelease candidateOne of the final stages in the version release cycle, this version signals the potential to be a final release to the public. Also see alpha (beta). 2 is now available!
WordPress 6.9 Dev Notesdev noteEach 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.
For more detailed information, see the following WordPress 6.9 Dev Notes:
WordPress 6.9 is planned for December 2, 2025. Release Candidate 3 is planned for November 25.
Call for Testing
The Test Team invites testing and feedback on the following upcoming blockBlockBlock is the abstract term used to describe units of markup that, composed together, form the content or layout of a webpage using the WordPress editor. The idea combines concepts of what in the past may have achieved with shortcodes, custom HTML, and embed discovery into a single consistent API and user experience. editor features:
The discussion section of the agenda is for discussing important topics affecting the upcoming release or larger initiatives that impact the CoreCoreCore 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.
Core block selection process
@elrae raises the question of how decisions on new Core blocks are made and how relevance and prioritization are determined (e.g., Math block, “Marquee” in Issue 71026).
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.
Emails sent from WordPress will be more reliable in WordPress 6.9 thanks to a few updates and bugbugA bug is an error or unexpected result. Performance improvements, code optimization, and are considered enhancements, not defects. After feature freeze, only bugs are dealt with, with regressions (adverse changes from the previous version) being the highest priority.-fixes to the wp_mail() function.
The sender address is extensibly configured.
The sender address, also known as the Envelope-From, the MAIL FROM, the Return-Path (and even more), is the address where other email servers send “bounce messages” when they can’t deliver a message. Since WordPress 4.7.0 this value was being set by the outgoing mail server and would often end up misconfigured1. That doesn’t sound like it should be a big problem — a site may not receive those notifications from failed delivery — but it’s a bigger problem because of the Sender Policy Framework (SPF) and DMARC systems which help prevent the transmission of spam. They reject these emails entirely.
Thanks to the change in [61010], WordPress 6.9 sets the sender address in an extensibleExtensibleThis is the ability to add additional functionality to the code. Plugins extend the WordPress core software. way:
If a From email headerHeaderThe header of your site is typically the first thing people will experience. The masthead or header art located across the top of your page is part of the look and feel of your website. It can influence a visitor’s opinion about your content and you/ your organization’s brand. It may also look different on different screen sizes. is present it uses the From address. Otherwise it defaults to wordpress@home_url(), where home_url() is “the URLURLA specific web address of a website or web page on the Internet, such as a website’s URL www.wordpress.org for the current site where the front end is accessible.”
Plugins can then filterFilterFilters are one of the two types of Hooks https://codex.wordpress.org/Plugin_API/Hooks. They provide a way for functions to modify data of other functions. They are the counterpart to Actions. Unlike Actions, filters are meant to work in an isolated manner, and should never have side effects such as affecting global variables and output. the sender address via the wp_mail_from filter in the case the inferred or default address is incorrect2.
For those with custom email configurations it may be necessary to hook into the wp_mail_from filter. If your site was relying on a pluginPluginA plugin is a piece of software containing a group of functions that can be added to a WordPress website. They can extend functionality or add new features to your WordPress websites. WordPress plugins are written in the PHP programming language and integrate seamlessly with WordPress. These can be free in the WordPress.org Plugin Directory https://wordpress.org/plugins/ or can be cost-based plugin from a third-party to work around this issue before, or you relied on the phpmailer_init filter to do so, you may no longer need to do that. Otherwise, without any effort on your part, WordPress 6.9 should become more reliable out-of-the-box at sending emails.
The Encoding headers are protected between calls.
wp_mail() calls a $phpmailer global object to actually send emails, meaning that certain state is shared between calls for a given PHPPHPThe web scripting language in which WordPress is primarily architected. WordPress requires PHP 7.4 or higher request. Internal logic in the PHPMailer class looks for certain factors in a message that it uses to set or change the Encoding headers in outbound emails. Because this object is global, those encoding changes persisted and, in some cases, would apply to successive emails and cause problems when trying to read them.
In [61131] the internal encoding is reset before sending emails so that PHPMailer sends the appropriate encoding type for each email, based solely on the server configuration and specifics in that message.
Multipart messages are assigned the proper Content-Type.
For the past seventeen years there was a lurking bug in how WordPress interacts with PHPMailer for multipart messages. Ironically, the bug was introduced in a patchpatchA special text file that describes changes to code, by identifying the files and lines which are added, removed, and altered. It may also be referred to as a diff. A patch can be applied to a codebase for testing. meant to address this specific case, but an oversight left WordPress sending a corrupted ContentType to PHPMailer. In these cases, PHPMailer would further corrupt the outbound message because of this invalidinvalidA resolution on the bug tracker (and generally common in software development, sometimes also notabug) that indicates the ticket is not a bug, is a support request, or is generally invalid. content type. In rare cases this led to a duplicate Content-Type header, but the normative expression was corrupting the multipart boundaries.
This complicated interaction is resolved in [61201] which simplifies the previous fix by relying on PHPMailer’s facilities for setting the content type rather than attempting (erroneously) to manually specify that header.
Many mail servers auto-generate a sender address from the system user running on the server and the local server hostname, such as www@node-14-dc3.example.com. ↩︎
This could be the case for sites with more advanced email setups, particularly those which send emails from a subdomain or different domain than on which the site is hosted. ↩︎
WordPress 6.9 Release Candidaterelease candidateOne of the final stages in the version release cycle, this version signals the potential to be a final release to the public. Also see alpha (beta). 1 is now available!
WordPress 6.9 Dev Notesdev noteEach 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.
For more detailed information, see the following WordPress 6.9 Dev Notes:
The Test Team invites testing and feedback on the following upcoming blockBlockBlock is the abstract term used to describe units of markup that, composed together, form the content or layout of a webpage using the WordPress editor. The idea combines concepts of what in the past may have achieved with shortcodes, custom HTML, and embed discovery into a single consistent API and user experience. editor features:
@SirLouen opened a discussion on whether incremental, not-yet-perfect improvements should be accepted in WordPress or if broken situations should remain until a full consensus and ideal solution is found. Most participants agreed that there is significant middle ground — every case requires context and analysis. @jorbin and @davidbaumwald highlighted that no single right solution exists, while @johnbillion suggested clearer acceptance criteria could help reduce long-standing tickets.
WordPress 6.9 fixes a specificity issue with the Heading block’s background padding. Previously, padding styles applied to headings with backgrounds were affecting other blocks that use heading elements, such as the Accordion Heading blockBlockBlock is the abstract term used to describe units of markup that, composed together, form the content or layout of a webpage using the WordPress editor. The idea combines concepts of what in the past may have achieved with shortcodes, custom HTML, and embed discovery into a single consistent API and user experience.. This fix ensures that background padding is only applied to actual Heading blocks.
What’s changed?
The CSSCSSCascading Style Sheets. selector for applying padding to headings with backgrounds has been made more specific. The selector now targets .wp-block-heading.has-background instead of just heading element tags (h1, h2, etc) with the .has-background class.
The use of :where() ensures the CSS specificity remains at 0-1-1, minimizing impact on existing theme styles. As the CSS specificity remains unchanged, existing theme styles targeting heading elements should continue to work as expected.
What does this mean for themes?
If a theme applies the .has-background class to heading elements that are not Heading blocks (e.g., <h1 class="page-title has-background">Hello World</h1>), these elements will no longer receive the default block background padding. If a theme relies on this behavior, it will need to be updated to include explicit padding styles for these elements.
You must be logged in to post a comment.