WordPress 7.0 Field Guide

This guide outlines major developer features and breaking changes in 7.0 and is published in the Release Candidaterelease candidate One 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). phase to help inform WordPress extending developers, CoreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. developers, and others.

There are more than 419 Core Trac tickets included in WordPress 7.0, over 76 of which are enhancements and feature requests, and more than 300 bug fixes. This release includes 40+ tickets focused on the Editor, and 90+ tickets focused on wp-admin.

Additionally, this release includes 411 enhancements and more than 486 bug fixes for the Editor, Dashboard, and AI integration.

Below is a breakdown of the most important developer-related changes included in WordPress 7.0.

AI building blocks of the future

Step into a new era with WordPress 7.0, shipped with AI integration and abilities. Provider-agnostic architecture gives you full control over units and capabilitiescapability Aย 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). while tapping into the endless opportunities AI can bring to life. These critical building blocks are just the beginning, paving the way for agentic collaborators and so much more.

WP AI Client

WordPress 7.0 unlocks AI capabilities right in your website. The new WP AI client adds a central interface that lets plugins communicate with generative AI models while remaining provider-agnostic. WordPress Core handles request routing for you. Managed in the Settings > Connectors screen with APIAPI An API or Application Programming Interface is a software intermediary that allows programs to interact with each other and share data in limited, clearly defined ways. keys funneled through the Connectors API, you can start with some preset models and add your favorites.

As a bonus, the Abilities API is integrated directly into the WP AI Client, delivering new and expansive AI abilities that can be built into workflows that run abilities fluidly, one after another.

PluginPlugin A plugin is a piece of software containing a group of functions that can be added to a WordPress website. They can extend functionality or add new features to your WordPress websites. WordPress plugins are written in the PHP programming language and integrate seamlessly with WordPress. These can be free in the WordPress.org Plugin Directory https://wordpress.org/plugins/ or can be cost-based plugin from a third-party. developers can use the new using_model_preference() function to indicate which models to use in order of preference, then add feature detection to match capabilities against available models โ€“ lowering cost and speeding up processing time. The AI Client includes a series of advanced configuration controls, and a WP_AI_Client_Prompt_Builder class for calling methods. For easy upgrades, the wordpress/wp-ai-client package handles transitioning to 7.0 automatically.

Client-Side Abilities API

WordPress 7.0 expands on the Abilities API by introducing a JavaScriptJavaScript JavaScript 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 counterpart: the Client-Side Abilities package with new and hybrid abilities, an intuitive UIUI User interface, a command palette, and filterFilter Filters are one of the two types of Hooks https://codex.wordpress.org/Plugin_API/Hooks. They provide a way for functions to modify data of other functions. They are the counterpart to Actions. Unlike Actions, filters are meant to work in an isolated manner, and should never have side effects such as affecting global variables and output. and query functionality.

Plugin developers can enqueue @wordpress/core-abilities to automatically fetch and register server-side abilities via the REST APIREST API The REST API is an acronym for the RESTful Application Program Interface (API) that uses HTTP requests to GET, PUT, POST and DELETE data. It is how the front end of an application (think โ€œphone appโ€ or โ€œwebsiteโ€) can communicate with the data store (think โ€œdatabaseโ€ or โ€œfile systemโ€) https://developer.wordpress.org/rest-api/, or enqueue only @wordpress/abilities to work with the pluginโ€™s client-side abilities. Registered abilities are organized in customizable categories, and abilities and categories can be unregistered via the PHPPHP The web scripting language in which WordPress is primarily architected. WordPress requires PHP 7.4 or higher API. ย MetaMeta Meta is a term that refers to the inside workings of a group. For us, this is the team that works on internal WordPress sites like WordCamp Central and Make WordPress. data annotation is supported, and core/abilities makes useSelect available for reactive queries in ReactReact React is a JavaScript library that makes it easy to reason about, construct, and maintain stateless and stateful user interfaces. https://reactjs.org components.

AI Connectors Screen

Manage all of your AI provider connections in one place on the new Connectors screen. Found under Settings > Connectors in the dashboard, the screen gives you everything you need to manage your connections. Registered connectors are displayed automatically on the page, and so is detailed registry meta data in a card format. The Connectors screen includes three default providers: Anthropic, Google, and OpenAI, while also allowing users to configure their own connections.

WP 7.0 Connectors Screen

Connectors API

The Connectors API is the backbone of the Connectors screen; an extensibility API that facilitates and supports the inclusion of agents.

The API supports two authentication methods (api_key and none) based on provider metadata, and is designed to facilitate additional connector types in future releases. The Connectors API uses the WP AI Clientโ€™s default registry to automatically discover providers, and corresponding metadata to generate connectors, while connectors authenticated via other methods are stored in the PHP registry. You can use the wp_connectors_init action to override connectors metadata, which will be the key for registering new connector types in future releases. The API includes three public functions for querying the registry, and the frontend UI can be customized using client-side JavaScript registration.

Modernized Dashboard

WordPress 7.0 delivers an upgraded adminadmin (and super admin) experience, with a sleek, new color scheme named โ€œModernโ€, numerous enhancements throughout the dashboard, and seamless visual transitions as you navigate from screen to screen. A new Command Palette shortcut in the upper admin bar lets you access tools from anywhere in the dashboard, while a new dedicated dashboard page for font management centralizes and simplifies managing fonts. The enhanced iframed post editor stabilizes the screen, while editors leave comments on blocks, receive notifications for notes and even visually compare two revision versions.

New admin color scheme and styles

WordPress administration has been reinvigorated with a new, chic color scheme throughout the dashboard. The new Modern admin theme is live across admin headers, the CustomizerCustomizer Tool 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., the color scheme picker, script loader, various user functions, and even the multisitemultisite Used to describe a WordPress installation with a network of multiple blogs, grouped by sites. This installation type has shared users tables, and creates separate database tables for each blog (wp_posts becomes wp_0_posts). See also network, blog, site user signup has been reskinned. The Modern theme is clean and easy on the eyes, boasting a refreshed color palette, higher contrast, and upgraded typography, uplifting and elevating the admin experience.

View Transitions in WP Admin

Navigating the dashboard is a smooth ride in 7.0. User views slide from one screen to the next as you move across wp-admin. Cross-document view transitions use distinct transition names for admin menu items in order to facilitate this simple visual slide effect, firing when the active submenu changes between screens. With consideration for all users, View Transitions are only activated if a preference is not set for reduced motion on the OS level.

Command Palette shortcut

Access your editing toolset from anywhere in the dashboard with a single click of the new Command Palette shortcut. WordPress 7.0 includes a โŒ˜K or Ctrl+K icon for logged-in users in the upper admin bar, which unfurls the command palette on click. The new shortcut speedruns editing and gives full control from anywhere in the dash: while building, designing or simply browsing notes.

Font Library

The Font Library has expanded in 7.0 with the introduction of a dedicated font management page. Now you and your team can manage, upload and install fonts from one place in blockBlock Block is the abstract term used to describe units of markup that, composed together, form the content or layout of a webpage using the WordPress editor. The idea combines concepts of what in the past may have achieved with shortcodes, custom HTML, and embed discovery into a single consistent API and user experience., hybrid and classic themes.

Visual RevisionsRevisions The WordPress revisions system stores a record of each saved draft or published update. The revision system allows you to see what changes were made in each revision by dragging a slider (or using the Next/Previous buttons). The display indicates what has changed in each revision.

In WordPress 7.0, Visual Revisions make editing easier and more intuitive, while adding insight into post or page edit history. Users can now visually compare two revision versions directly in the Editor using a slider bar to visually switch between revisions. The document inspector shows a summary of changes, while color indicators and sizes of changes can be seen for each location, jumping to that location on the page when clicked.

Iframed Editor

An improved, iframed editor in 7.0 offers more stability to the post editor experience. An iframed post editor is now enforced when all Block API blocks inserted into the post are using version 3 of the API or higher. If not, the iframeiframe iFrame is an acronym for an inline frame. An iFrame is used inside a webpage to load another HTML document and render it. This HTML document may also contain JavaScript and/or CSS which is loaded at the time when iframe tag is parsed by the userโ€™s browser. is removed, upholding backwards compatibility for lower-versioned blocks.

Notes

Notes are even better in 7.0, with a focus on streamlining team workflows. Data now syncs automatically, while a new keyboard shortcut, new dashboard widgetWidget A WordPress Widget is a small block that performs a specific function. You can add these widgets in sidebars also known as widget-ready areas on your web page. WordPress widgets were originally created to provide a simple and easy-to-use way of giving design and structure control of the WordPress theme to the user., and new notifications help you stay on top of team communication. Support for multi-block notes has been added, along with support for partial selections and rich text editing.

Creative Customization

7.0 inspires creativity with enhanced design tools and new editing capabilities. Users can now customize navigation overlays on mobile, granular control of the responsiveness for individual blocks, and edit at the pattern level in different modes.

Custom Navigation Overlays on mobile

Hamburger menu overlays can now be customized and built from blocks and patterns in the Site Editor, with a dedicated Navigation Overlay Close block for placing and styling a close button anywhere within the overlay, giving users and theme authors flexibility to define mobile navigation experiences. In-place overlay selection and previews create a seamless editing experience, while users can review and assign overlays, and themes can offer default templates for quick setup.

Responsive Editing Mode

WordPress 7.0 introduces customizable block visibility based on device type, allowing editors to hide or reveal blocks by device, without affecting other viewports. Controls to launch a block visibility options modal are available in the block toolbar, block inspector sidebarSidebar A sidebar in WordPress is referred to a widget-ready area used by WordPress themes to display information that is not a part of the main content. It is not always a vertical column on the side. It can be a horizontal rectangle below or above the content area, footer, header, or any where in the theme., and command palette. Icons are displayed in List View next to blocks that have active visibility rules, indicating what viewports they are being hidden on.

Offering even more responsiveness enhancements, 7.0 introduces the ability to change styles for different breakpoints, customize breakpoint sizes and more.

Pattern Editing and contentOnly Interactivity

7.0 introduces Pattern Overrides for custom blocks, Pattern-level editing modes for contextual and symbol patterns, a parent-child tree view for buttons and list blocks, and the ability to opt out of contentOnly mode.

contentOnly mode will now be default for patterns that previously relied on unrestricted editing of their inner blocks, while a new disableContentOnlyForUnsyncedPatterns setting or block_editor_settings_all PHP filter allows contentOnly mode to be opted out of for unsynced patterns.

In 7.0 contentOnly mode is applied more broadly, so if a block is nested in a contentOnly pattern, plugin developers will want to ensure attributes representing the blockโ€™s content have "role": "content" set in block.json to retain their ability to be edited and prevent them from being hidden in list view.

Block developers can now add a "listView": true block supports declaration to add a List View tab to the block inspector with a dedicated view for the block that allows editors to update and customize the block more easily.

Block attributes that support Block Bindings now also support Pattern Overrides for custom blocks. Pattern Overrides now apply to any block, including custom blocks, and can be opted-in through block_bindings_supported_attributes filter(s). Attribute values appear in the rendered blocksโ€™ markup for dynamic and static blocks, and if static blocks have more complex attributes than the HTMLHTML HyperText Markup Language. The semantic scripting language primarily used for outputting content in web browsers. API can process, a render_callback() function can be used to ensure bound attribute values render.

Design Agility

Designing in WordPress 7.0 has become more flexible with the introduction of new blocks, new block supports and new design tools. A new Heading block, Icons block, and Breadcrumbs block are shipped with 7.0, with added lightbox support for the Gallery block, and dynamic URLURL A specific web address of a website or web page on the Internet, such as a websiteโ€™s URL www.wordpress.org support in the Navigation Link block. 7.0 includes text line indent support, text column support, dimensions width and height support, dimension presets, tools and controls, and aspect ratios for wide and full images.

Custom CSSCSS Cascading Style Sheets. on the block level

7.0 introduces the ability for custom CSS to be applied on-page to individual blocks. This allows granular control over every detail of your content, with quick and intuitive access to style controls.

Headings Block

A new Heading Block includes variations of all heading levels, easy toggling in the sidebar inspector and quick transforms, and display in the search and slash inserter.

The new Breadcrumbs Block in 7.0 automatically reflects the siteโ€™s navigational hierarchy with the ability for global application in site parts like the theme headerHeader The 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.. New filters allow developers to add, remove, and modify breadcrumb trails, and specify which taxonomyTaxonomy A taxonomy is a way to group things together. In WordPress, some common taxonomies are category, link, tag, or post format. https://codex.wordpress.org/Taxonomies#Default_Taxonomies. and terms appear in the Breadcrumbs trails.

Editing the navigation block is now more simple with improved insertion, Interactivity for pattern editing and ContentOnly, and improved โ€œboundโ€ page items presentation.

Video embed cover blockย 

Videos can now be embedded as section backgrounds in the Cover block.ย 

The Gallery block now has lightbox support with an added slideshow option. Just create and insert a Gallery, click the link icon and then hit โ€˜enlarge on clickโ€™. Click below to see!

Added <p> Block Supports

Text in the Paragraph block can now be arranged in a columns layout, and opt-in textIndent block support for typography has been introduced.

More details on new and improved blocks are available here:

Dimensions Support Enhancements

7.0 introduces height and width block support, typography text indent support in paragraphs, presets support, and pseudo elements support on the core/button block for ( ':hoverโ€˜, ':focusโ€˜, ':focus-visible', ':active' ) at the theme.json level. Support for preset dimensions values in theme.json have been added for block supports such as width, height and min-height, allowing the blockโ€™s variations to control the same pseudo elements, while a defined set of preset values for dimensions block supports can be leveraged to reduce the need to know and manually set the same value across multiple blocks.

Developerโ€™s toolbox

7.0 delivers an expansive developer toolbox including new tools for building, enhanced supportive structures, and expanded API abilities. Developers can now create a PHP-only representation of blocks on the server level, customize plugin list filters, and explore the foundational layout for a more extensibleExtensible This is the ability to add additional functionality to the code. Plugins extend the WordPress core software. Site Editor.

PHP Only Block Registration

WordPress 7.0 allows blocks and patterns to be created directly on the server with PHP, and registered with the Block API. The PHP-only representation of blocks and patterns includes pattern creation and syntax that streamlines block creation and bindings, registering blocks automatically When a block declares 'supports' => array( 'autoRegister' => true ) along with a render callback, exposing it to the client-side via a JavaScript global variable. PHP-registered block attributes can be edited in the editor and inspector controls can be generated from attributes, with automatic DataForm inspector controls added for PHP auto-registered blocks.

Interactivity API

Introducing a new watch() function to the @wordpress/interactivity package that subscribes to changes in any signal accessed inside a callback, re-running the callback whenever those signals change. The APIโ€™s data-wp-watch can be added to a DOM elementโ€™s lifecycle and react to state changes. The state.url value is now populated server-side during directive processing, remaining unchanged until the first client-side navigation occurs.

DataViews and DataFormsย 

Experience a new Activity layout, new Details layout, Improved modal appearance, and the ability to register 3rd party types in the Field API.

Block bindings API iterationsย 

Introducing the Block bindings and patterns overrides feature, with the ability to filter available attribute sources by format, aligning with the Field API.

New plugin list filterย 

A new plugins_list_status_text filter in get_views() has been added to allow custom filtering. Custom statuses added with plugins_list now appear as tabs to filter the related plugins. The tab label can be customized using the new plugins_list_status_text hook.

Site Editor wordpress/build and routing

In 7.0 the foundation has been laid for an extensible site editor and routing, route validation, a new @wordpress/boot package that allows plugins to build custom site-editor pages, and a refactored @wordpress/scripts that builds from directories and reduces Webpack dependence.

Bonus dev goodies

WordPress 7.0 introduces updates that span every area of Core. These changes support ongoing initiatives to create a flexible foundation for developers while boosting usability and opportunity.

Block HooksHooks In WordPress theme and development, hooks are functions that can be applied to an action or a Filter in WordPress. Actions are functions performed when a certain event occurs in WordPress. Filters allow you to modify certain functions. Arguments used to hook both filters and actions look the same. for content-like Custom Post Types.

The Block Hooks logic has been moved from individual post type filters to the REST controller.

More secure user registration

Administrator and Editor roles have been removed from the new user default selector under General in the admin screen. Site Health now alerts if one of those roles was selected before updating, while a new default_role_dropdown_excluded_roles filter allows developers to change default excluded roles.

CodeMirror Update to v5

CodeMirror has been updated to the latest v5 version, along with CSSLint, HTMLHint, and JSONLint, while Esprima has been replaced with Espree for ES6 support and JavaScript linting.

External Libraries Updates

PHP Updates

  • WordPress Coreโ€™s minimum PHP version is now 7.4ย 
  • PHPMailer has been updated to version 7.0.2, which includes a Sender address bugbug A bug is an error or unexpected result. Performance improvements, code optimization, and are considered enhancements, not defects. After feature freeze, only bugs are dealt with, with regressions (adverse changes from the previous version) being the highest priority. fix.

AccessibilityAccessibility Accessibility (commonly shortened to a11y) refers to the design of products, devices, services, or environments for people with disabilities. The concept of accessible design ensures both โ€œdirect accessโ€ (i.e. unassisted) and โ€œindirect accessโ€ meaning compatibility with a personโ€™s assistive technology (for example, computer screen readers). (https://en.wikipedia.org/wiki/Accessibility)

WordPress 7.0 includes numerous improvements and additions that make content more accessible for everyone. The login password reset now pre-populates with a username to comply with WCAGWCAG WCAG 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, and a new wp_get_image_alttext() function imports Image Alt text metadata from image IPTC metadata. The word-break property has been added to .screen-reader-text to ensure screen readers wonโ€™t read text as individual letters in hidden text, and view transitions are only activated when reduced motion is not set.

Title attributes can now be removed from two functions using a new $use_title_attr parameter, and are removed from three author link functions by default.

But wait, thereโ€™s more!

7.0 offers so much more! More than 300 Core bugs, 486 GutenbergGutenberg The Gutenberg project is the new Editor Interface for WordPress. The editor improves the process and experience of creating new content, making writing rich content much simpler. It uses โ€˜blocksโ€™ to add richness rather than shortcodes, custom HTML etc. https://wordpress.org/gutenberg/ bugs, 77 enhancements and feature requests, and 35 blessed tasks have been marked as fixed in WordPress 7.0.

Below are a few to highlight:

  • Site Health: OPCache added to Site Health > Info > Server (Trac #63697)
  • Editor: Name/description metadata added to patterns when saved (Trac #64123 )
  • Script Loader: Allow scripts to depend on modules: (Trac #61500)
  • Script Loader: HTML5 script theme support deprecated and removed (Trac #64442)ย 
  • General: Allow hooking into wp_trigger_error() when WP_DEBUG is not truthy. (Trac #60886)ย 
  • Multisite: Networks and Sites no longer automatically mark website as spam when an account is marked as spam (Trac #61146)
  • Themes: PHP 8.1 deprecation notice handling (Trac #64864)
  • Editor: Bottom margins removed from all components, and margin-free styles are now default. (GB #39358)

Thank you to everyone who contributed to this version of WordPress, whether through code, testing, or something else โ€“ your contributions matter and help Make WordPress.

Props to @westonruter, @sabernhardt, @marybaum, @jeffpaul, @jorbin, @desrosj, @coffee2code, @audrasjb, @wildworks and @ankit-k-gupta for collaboration and review.

Edit 5/17/26: Add DataViews dev notedev note Each important change in WordPress Core is documented in a developers note, (usually called dev note). Good dev notes generally include a description of the change, the decision that led to this change, and a description of how developers are supposed to work with that change. Dev notes are published on Make/Core blog during the beta phase of WordPress release cycle. Publishing dev notes is particularly important when plugin/theme authors and WordPress developers need to be aware of those changes.In general, all dev notes are compiled into a Field Guide at the beginning of the release candidate phase., update Connectors screen image, add textIndent block support dev note, remove mention of playlist block, add mention of margin-free styles default.

#7-0, #field-guide

WordPress 6.9 Field Guide

Edit 11/25/25: The Miscellaneous Editor Changes developer note was published after the Field GuideField guide The field guide is a type of blogpost published on Make/Core during the release candidate phase of the WordPress release cycle. The field guide generally lists all the dev notes published during the beta cycle. This guide is linked in the about page of the corresponding version of WordPress, in the release post and in the HelpHub version page.. It has been added below.

Edit 12/15/25 The Adjacent Post Navigation Changes developer note was published after the Field Guide and has been added below.

This guide outlines major developer features and breaking changes in 6.9 and is published in the Release Candidaterelease candidate One 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). phase to help inform WordPress extending developers, CoreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. developers, and others.

There are more than 400 Core Trac tickets included in WordPress 6.9, over 125 of which are enhancements and feature requests, and more than 250 bug fixes. This release includes 35+ tickets focused on the Editor, 15 tickets focused on wp-admin, and over 45 tickets focused on performance.

Additionally, this release includes 440 enhancements and more than 570 bug fixes for the BlockBlock Block is the abstract term used to describe units of markup that, composed together, form the content or layout of a webpage using the WordPress editor. The idea combines concepts of what in the past may have achieved with shortcodes, custom HTML, and embed discovery into a single consistent API and user experience. Editor, Site Editor, DataViews, and other related Core APIs.

Below is a breakdown of the most important developer-related changes included in WordPress 6.9.


Table of contents


New Ways to Collaborate

Creating and managing content with WordPress 6.9 is more versatile, with new tools and features that encourage collaboration and increase the ease of use. Users can now add notes to blocks, and can take advantage of optimized DataViews and a command palette implemented across wp-admin.

Notes

In WordPress 6.9 editors can write notes and reply to others directly at the individual block level, allowing teams to collaborate, track changes, and provide feedback during the editing process. Notes can be resolved, edited, deleted, and email notifications are sent to the post author when a new one is left.

Updates to Field APIAPI An API or Application Programming Interface is a software intermediary that allows programs to interact with each other and share data in limited, clearly defined ways., DataViews and DataForms Components

This release also comes with upgrades to the Field API as well as the DataViews and DataForms components.


In the Field API the field type has been expanded to include more than 10 new field types, 11+ edit controls that support validation, over 16 filterFilter Filters are one of the two types of Hooks https://codex.wordpress.org/Plugin_API/Hooks. They provide a way for functions to modify data of other functions. They are the counterpart to Actions. Unlike Actions, filters are meant to work in an isolated manner, and should never have side effects such as affecting global variables and output. operators and user-input filters in filterBy, readOnly options to disable field editing, and so much more. Updated DataViews functions include improvements to modals and text-based actions, infinite scroll, and the ability to build custom layouts with children that leverage DataViewsโ€™ internal state management and data handling logic. DataViews also now persists via @wordpress/views while DataForms now has an improved panel, new card and row layouts, and revamped controlled validation.

Improved Editing Tools and Architecture

WordPressers can now drag and drop blocks more easily, hide blocks with a click, and use the new WP_Block_Processor class to convert documents into a block structure, while page architecture is improved with the continued integration of iframes.

Direct Drag and Drop

Drag and drop has been improved, with the ability to directly move blocks around within the site editor instead of a drag chip, for a faster, easier, and more intuitive editing experience.

Ability to Hide Blocks

WordPress 6.9 allows editors to hide and reveal blocks with a simple click.

Iframeiframe iFrame is an acronym for an inline frame. An iFrame is used inside a webpage to load another HTML document and render it. This HTML document may also contain JavaScript and/or CSS which is loaded at the time when iframe tag is parsed by the userโ€™s browser. Integration in Post Editor

As part of an ongoing initiative to move the post editor into an iframe, a few changes have been made to help with this transition:

  1. The block.json schema now only allowsapiVersion 3 for new or updated blocks.
  2. A warning will be displayed in the browser console when a block is registered usingapiVersion 1 or 2.ย 

These changes aim to help developers migrate their blocks to use apiVersion 3 with the plan to fully place the editor within an iframe in WordPress 7.0. While this change has been researched and tested at length, additional testing is needed by block and pluginPlugin A plugin is a piece of software containing a group of functions that can be added to a WordPress website. They can extend functionality or add new features to your WordPress websites. WordPress plugins are written in the PHP programming language and integrate seamlessly with WordPress. These can be free in the WordPress.org Plugin Directory https://wordpress.org/plugins/ or can be cost-based plugin from a third-party. developers to make any necessary improvements in future releases.

Streaming Block Parser

WordPress 6.9 includes a new WP_Block_Processor tool for scanning block structure in HTMLHTML HyperText Markup Language. The semantic scripting language primarily used for outputting content in web browsers. documents. The new class walks through the document to analyze or adjust the block structure while showing a structural view without affecting text, converting documents into a nested array of block information and parsed JSONJSON JSON, or JavaScript Object Notation, is a minimal, readable format for structuring data. It is used primarily to transmit data between a server and web application, as an alternative to XML. attributes.

New Blocks and Block Improvements

An expanded block library with new and upgraded blocks is bundled into 6.9, which includes a new math block, new accordion block, terms query block, comments link and comments count blocks, and improved heading and time to read blocks. This release also contains modified text editing abilities with fitText block support that enables automatic font size adjustment to fit text within its container boundaries (and much more).

Perform Calculations using ฯ€ in the Math Block

The new Math block adds support for MathML and LaTeX renderers to display math in either block or inline mode, which can be added in any rich text field including tables, headings, and lists.

Collapsible Content with the new Accordion Block

The new Accordion Block in 6.9 supports custom styling and pattern capabilitiescapability Aย 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).. Learn how to style accordion blocks here.

Heading Block CSSCSS Cascading Style Sheets. Specificity Fix

6.9 includes a refined CSS selector for padding in headings that have a background, which now targetsย headings with both.wp-block-heading and.has-background classes to ensure padding customizations affect only the intended block.

New & Improved APIs

Meet the Abilities API

The Abilities API enables WordPress Core, plugins, and themes to register their functionality in a unified, standardized, machine-readable format. The Abilities API is part of the broader AI Building Blocks for WordPress initiative to build the tools needed for extenders to integrate AI tools into WordPress in a native way.

Updates to Interactivity API

In WordPress 6.9 the Interactivity API now offers a standardized way to assign unique IDs to Interactivity API directives, allowing website elements to be given multiple similar directives without conflicts. The getServerState() and getServerContext() functions have been updated, and a new algorithm optimizes script and stylesheet handling, enhanced support for router regions in interactive elements, and adds a new attachTo property that acts as a CSS selector pointing to the parent element for router rendering.

Updates to HTML API

The HTML API has been refined in 6.9, with multiple bugbug A bug is an error or unexpected result. Performance improvements, code optimization, and are considered enhancements, not defects. After feature freeze, only bugs are dealt with, with regressions (adverse changes from the previous version) being the highest priority. fixes and enhancements. The WP_HTML_Processor::serialize_token()is now public, extending the safety of the HTML API to outside code modifying and combining HTML, while set_modifiable_text() now rejects SCRIPT element contents that could disturb its normal closing.

Improved Block Binding API

The updated Block Bindings interface in 6.9 focuses on usability, with the added ability to switch between sources, and bind or unbind attributes with a single click, while the new block_bindings_supported_attributes_{$block_type}filter facilitates customizing how a blockโ€™s attributes connect to a Block Bindings source.

Optimized Performance

WordPress 6.9 delivers significant performance improvements designed to improve the site loading experience for visitors. Improvements to LCP (Largest Contentful Paint) metric are achieved by implementing on-demand block styles for classic themes, minifying block theme styles, and increasing the limit for inline stylesโ€”all of which reduce render blocking. The critical rendering path is decongested by deprioritizing non-critical scripts (e.g. for interactive blocks and emoji detection) which had competed with loading resources like the LCP elementโ€™s image. Page stability is also improved by preventing the Video block from causing layout shifts.

Many other enhancements are shipped, such as optimized database queries, improved caching, better spawning of WP Cron, and a new template enhancementenhancement Enhancements are simple improvements to WordPress, such as the addition of a hook, a new feature, or an improvement to an existing feature. output buffer which opens the door for many future optimizations which were previously impossible.

Modernizing UTF-8 Support

A new fallback pipeline written in PHPPHP The web scripting language in which WordPress is primarily architected. WordPress requires PHP 7.4 or higher enables WordPress 6.9 to process text encoding and UTF-8 handling independently of the running environment, bringing more reliability across WordPress environments and for themes and plugins that work with international content, emojis and the like.

Updated Query Cache Handling

The 6.9 release changes how cache keys are created when caching queries performed through WP_Query. While persistent object cache drop-ins should not be affected, developers and web hosts should make note of the changes and take advantage of the four new functions introduced.

Remove Support for Loading Assets Conditionally for IE

WordPress 6.9 removes support for enqueing scripts and styles with legacy conditional statements that target specific versions of Internet Explorer conditional. All remaining related checks have also been removed from the default themes, an effort that began in #56699. The code related to Genericons has also been updated for themes that included this webfont.

AccessibilityAccessibility Accessibility (commonly shortened to a11y) refers to the design of products, devices, services, or environments for people with disabilities. The concept of accessible design ensures both โ€œdirect accessโ€ (i.e. unassisted) and โ€œindirect accessโ€ meaning compatibility with a personโ€™s assistive technology (for example, computer screen readers). (https://en.wikipedia.org/wiki/Accessibility) Updates

WordPress 6.9 includes 10 enhancements and 23 bug fixes focused on accessibility, offering new and improved screen reader notifications, improved semantics and focus management, and updated CSS generated content to prevent excess content from being read.

PHP 8.5 Support

WordPress 6.9 has added โ€œbetaBeta A pre-release of software that is given out to a large group of users to trial under real conditions. Beta versions have gone through alpha testing in-house and are generally fairly close in look, feel and function to the final product; however, design changes often occur as part of the process. supportโ€ for PHP 8.5, addressing all known incompatibilities, warnings, and notices while maintaining support for older PHP versions (currently 7.2 and up). As a reminder, โ€œBeta supportโ€ is a label applied to versions of PHP that have less than 10% usage across all WordPress sites.

Miscellaneous Developer Changes

A range of additional developer-related updates improve both the user experience and the development experience. These changes span various areas of WordPress Core, including media, multisitemultisite Used to describe a WordPress installation with a network of multiple blogs, grouped by sites. This installation type has shared users tables, and creates separate database tables for each blog (wp_posts becomes wp_0_posts). See also network, blog, site, new hooksHooks In WordPress theme and development, hooks are functions that can be applied to an action or a Filter in WordPress. Actions are functions performed when a certain event occurs in WordPress. Filters allow you to modify certain functions. Arguments used to hook both filters and actions look the same., and browser interactions. While individually minor, they collectively reflect ongoing efforts to enhance usability in WordPress and provide a more predictable and flexible foundation for developers.

Miscellaneous Editor Changes

The 6.9 release also brings a number of miscellaneous developer-focused changes within the Block Editor. Be sure to read this dev notedev note Each important change in WordPress Core is documented in a developers note, (usually called dev note). Good dev notes generally include a description of the change, the decision that led to this change, and a description of how developers are supposed to work with that change. Dev notes are published on Make/Core blog during the beta phase of WordPress release cycle. Publishing dev notes is particularly important when plugin/theme authors and WordPress developers need to be aware of those changes.In general, all dev notes are compiled into a Field Guide at the beginning of the release candidate phase. so youโ€™re up to speed!

Updated Adminadmin (and super admin) Menu Search Query

In WordPress 6.9, the search query used by the admin menu has changed from $_SERVER['QUERY_STRING'] to $_GET. This makes the search behavior more predictable and avoids issues caused by depending on the raw query string. Extensions that override or inspect admin menu search behavior should review any assumptions about how the menu search value is retrieved.

Additional Support for HTTPSHTTPS HTTPS is an acronym for Hyper Text Transfer Protocol Secure. HTTPS is the secure version of HTTP, the protocol over which data is sent between your browser and the website that you are connected to. The 'S' at the end of HTTPS stands for 'Secure'. It means all communications between your browser and the website are encrypted. This is especially helpful for protecting sensitive data like banking information. in URLURL A specific web address of a website or web page on the Internet, such as a websiteโ€™s URL www.wordpress.org-escaping Functions

In WordPress 6.9, the esc_url(), esc_url_raw() and sanitize_url() functions can now be configured to prepend https:// to a URL that does not already contain a scheme by default when the first item in the $protocols array is 'https'.

Improved Email Handling and Inline Image Support

WordPress 6.9 introduces several updates that make the email system more reliable and more flexible for developers. The wp_mail() function now sets sender addresses in an extensibleExtensible This is the ability to add additional functionality to the code. Plugins extend the WordPress core software. way, protects encoding headers between calls, and leans more consistently on PHPMailer for content type handling. Many long standing bugs around headerHeader The 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. handling and message formatting have also been resolved.

This release also adds support for inline and embedded images in HTML emails, allowing developers to send richer message templates without relying on external image URLs. Email content that uses cid: based references can now render images directly inside the message, opening up cleaner options for branded notifications, transactional emails, and plugin generated workflows.

Adjacent Post Navigation Query Changes

SQL queries triggered by get_adjacent_post()functions have been updated in 6.9 as part of a bug fix. This change does change query handling in the Storefront theme and any themes that are a derivative of Storefront. Follow TracTrac An open source project by Edgewall Software that serves as a bug tracker and project management tool for WordPress. #64390ย for more details.

PHP AI Client

The new PHP AI Client SDK facilitates integration of AI abilities with plugins and PHP projects. The interface works with all AI providers, and developers can specify which AI abilities to include, which provider, and which model to use. Credentials are centrally managed and work across all compatible plugins.

MCP Adapter

The new MCP Adapter utilizes Model Context Protocol (MCP) to standardize the applicationโ€™s interactions with LLMs, expose abilities to AI assistants, and connect with other MCP servers. This allows WordPress to act as both server and client, registering its capabilities through the Abilities API for AI assistants to discover and use, while also integrating with other MCP servers, making it possible to leverage external AI tools within WordPress.

But wait, there is more!

6.9 offers so much more!ย  More than 250 bugs, 123 enhancements and feature requests, and 22 blessed tasks have been marked as fixed in WordPress 6.9.

Below are a few more to highlight:

  • Abilities API: Roadmap to WP 6.9: defining and deciding (AI-83)
  • Accessibility: Navigation block: fix submenu Escape key behavior (GB-69834)
  • Editor: Button Block: Add HTML Element selection in Advanced settingsย  (Accessibility) (GB-70139)
  • Editor: Enable the Command Palette everywhere in admin dashboard (GB-58218)
  • Editor: New block additions for the Block Library (GB-71026)
  • Editor: Toolbar: Adjust colors for dark mode supportย  (GB-66454)
  • General: Replace deprecated / non-standard CSS for speak and aural (accessibility) (GB-63603)
  • Global Styles: Move Randomize colors button to Edit Palette panel (GB-66169)

Thank you to everyone who contributed to this version of WordPress, whether through code, testing, or something else โ€“ your contributions matter and help Make WordPress.

Props to @desrosj, @jorbin, @sabernhardt, @joedolson, @priethor, @jeffpaul, @westonruter, @davidbaumwald, @akshayar, and @annezazu for review.

#6-9, #field-guide

WordPress 6.8 Field Guide

This guide outlines major developer features and breaking changes in 6.8 and is published in the Release Candidaterelease candidate One 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). phase to help inform WordPress extending developers, CoreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. developers, and others.

There are more than 300 Core Trac tickets included in WordPress 6.8, 104 of which are enhancements and feature requests, and more than 170 bug fixes. This release includes 23 tickets focused on performance, 34 on accessibility, and 16 on modernizing code and applying coding standards. Changes in 6.8 are spread across 43 Core components.

This release also includes 387 enhancements, 525 bug fixes, and 70 accessibility improvements for the BlockBlock Block is the abstract term used to describe units of markup that, composed together, form the content or layout of a webpage using the WordPress editor. The idea combines concepts of what in the past may have achieved with shortcodes, custom HTML, and embed discovery into a single consistent API and user experience. Editor (a.k.a. GutenbergGutenberg The Gutenberg project is the new Editor Interface for WordPress. The editor improves the process and experience of creating new content, making writing rich content much simpler. It uses โ€˜blocksโ€™ to add richness rather than shortcodes, custom HTML etc. https://wordpress.org/gutenberg/).

Below is a breakdown of the most important developer-related changes included in WordPress 6.8.


Table of contents


Block Editor

A wide array of improvements enhance performance, developer experience, and the overall editing interface.ย  This release introduces new tools like the should_load_block_assets_on_demand filterFilter Filters are one of the two types of Hooks https://codex.wordpress.org/Plugin_API/Hooks. They provide a way for functions to modify data of other functions. They are the counterpart to Actions. Unlike Actions, filters are meant to work in an isolated manner, and should never have side effects such as affecting global variables and output. for optimizing asset loading, a helpful warning system for developers using useSelect, and a more efficient block registration system.ย  Additionally, it updates the design tool availability per block, polishes user interface components, and delivers a collection of miscellaneous refinements that improve consistency and extensibility.

Performance and Asset Loading

New tools support developers in building more performant block-based experiences.ย  A warning in the useSelect hook alerts when selectors are defined inlineโ€”a common pattern that can lead to unnecessary re-renders.ย  The should_load_block_assets_on_demand filter offers fine-grained control over whether block assets are enqueued globally or only when needed, helping reduce unused CSSCSS Cascading Style Sheets. and JavaScriptJavaScript JavaScript 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 on the front end.ย  Together, these enhancements promote more efficient and optimized development workflows.

Block and Design Tool Registration

Improvements to block registration and design tool visibility streamline development and enhance clarity.ย  A more efficient approach to block type registration reduces the overhead of loading block metadata, especially in environments with many custom blocks.ย  Complementing this, the updated roster of design tools per block outlines which blocks support tools like padding, margin, and typographyโ€”giving developers a clearer picture of available customization options and improving consistency in the editor experience.

Editor UIUI User interface and Component Updates

Refinements across the block editor interface improve consistency, usability, and developer ergonomics.ย  Updates to core UI componentsโ€”such as buttons, inputs, and layout primitivesโ€”align styling and behavior with the emerging 40px design system standard.ย  Additional changes include improved markup consistency in the Navigation block, enhanced preview content for the Group block, and better accessibilityAccessibility Accessibility (commonly shortened to a11y) refers to the design of products, devices, services, or environments for people with disabilities. The concept of accessible design ensures both โ€œdirect accessโ€ (i.e. unassisted) and โ€œindirect accessโ€ meaning compatibility with a personโ€™s assistive technology (for example, computer screen readers). (https://en.wikipedia.org/wiki/Accessibility) across interface elements.ย  Together, these updates support a more polished and predictable editing experience.

Accessibility

A broad set of accessibility enhancements improves navigation, markup clarity, and screen reader support throughout the block editor.ย  The .screen-reader-text class now offers more consistent focus behavior across components, while dozens of refinements address menu structures, block labels, tooltips, and interface semantics.ย  These changes create a more inclusive editing experience and bring the block editor closer in line with accessibility best practices.

Internationalization

Several improvements to internationalization tooling and infrastructure enhance the translationtranslation The process (or result) of changing text, words, and display formatting to support another language. Also see localization, internationalization. and localization experience for both developers and users.ย  Updates include new and refined translation functions, consistency fixes, and improved support for plural formsโ€”making it easier to build plugins, themes, and interfaces that are fully translatable and globally accessible.

Performance

New tools and guidance help developers build faster, more responsive experiences.ย  The speculative loading feature leverages the Speculation Rules APIAPI An API or Application Programming Interface is a software intermediary that allows programs to interact with each other and share data in limited, clearly defined ways. to prefetch or prerender likely navigation targets, improving perceived performance for end users.ย  Additionally, updated best practices for the Interactivity API provide recommendations for writing efficient, scalable interactive front-end codeโ€”supporting modern, performance-focused development in WordPress.

REST APIREST API The REST API is an acronym for the RESTful Application Program Interface (API) that uses HTTP requests to GET, PUT, POST and DELETE data. It is how the front end of an application (think โ€œphone appโ€ or โ€œwebsiteโ€) can communicate with the data store (think โ€œdatabaseโ€ or โ€œfile systemโ€) https://developer.wordpress.org/rest-api/

Enhancements to the REST API expand its flexibility and usefulness for headless and decoupled WordPress applications.ย  A new filter, rest_menu_read_access, allows developers to control public access to navigation menus, menu items, and menu locations via the REST API.ย  This change enables more precise control over what menu data is exposed, supporting a wider range of front-end implementations and use cases.

Security

Password security is strengthened with support for bcrypt as the new default hashing algorithm.ย  This change modernizes WordPressโ€™s password storage, offering improved resistance to brute-force attacks and aligning with current industry best practices.ย  Existing passwords remain valid and will be rehashed with bcrypt upon the next successful login.

Miscellaneous Developer Changes

A range of smaller developer-focused updates improves consistency, extensibility, and the overall development experience.ย  These changes span various areas of core, including media handling, shortcodeShortcode A shortcode is a placeholder used within a WordPress post, page, or widget to insert a form or function generated by a plugin in a specific location on your site. output, post type registration, scheduling, and theme support.ย  While individually minor, they collectively reflect ongoing efforts to modernize WordPress and provide a more predictable and flexible foundation for developers.

But wait, there is more!

6.8 offers so much more!ย  More than 170 bugs, 104 enhancements and feature requests, and 21 blessed tasks have been marked as fixed in WordPress 6.8.ย  WordPress 6.8 will display Emoji 15.1โ€™s new emojis for visitors not able to display them natively, such as the ๐Ÿฆโ€๐Ÿ”ฅ.

Below are a few more to highlight:

  • Administration: Replace โ€œAdd New {Item}โ€ wording with โ€œAdd {Item}โ€ across the administration (#61219)
  • Bundled Theme: Improve text strings in Twenty Twenty-Five (#62482)
  • Bundled Theme: Accessibility additions to the site title link (#62895)
  • Date/Time: Date setting should have two more options: j.n.Y and d.m.Y (#55685)
  • Embeds: Add Canva as an oEmbed provider (#58840)
  • Options, MetaMeta Meta is a term that refers to the inside workings of a group. For us, this is the team that works on internal WordPress sites like WordCamp Central and Make WordPress. APIs: Rename the setted_transient action to set_transient (#62849)
  • REST API: Handle trailing slashes in rest_preload_api_request (#57048)
  • Security: Explicitly require the hash PHPPHP The web scripting language in which WordPress is primarily architected. WordPress requires PHP 7.4 or higher extension and add requirement checks during installation and upgrade (#56017)
  • Upgrade/Install: Prevent an unnecessary pluginPlugin A plugin is a piece of software containing a group of functions that can be added to a WordPress website. They can extend functionality or add new features to your WordPress websites. WordPress plugins are written in the PHP programming language and integrate seamlessly with WordPress. These can be free in the WordPress.org Plugin Directory https://wordpress.org/plugins/ or can be cost-based plugin from a third-party. update check when the plugin update data is up to date (#44118)
  • Widgets: Add post type support to get_calendar() function. This changeset also introduces a new get_calendar_args filter. (#34093)

Please, test your code.ย  Fixing issues that your code has with WordPress core helps you and millions of WordPress sites.ย  Please test your code.

Props to @joedolson @webcommsat @audrasjb @jorbin for review.

#6-8, #field-guide

Getting ready for PHP 8.4: some code changes landing in 6.7

Earlier in the 6.7 cycle, @hellofromtonya and @jrf made a number of commits to get the codebase ready for PHPPHP The web scripting language in which WordPress is primarily architected. WordPress requires PHP 7.4 or higher 8.4.

Here are a few of the most notable, starting with PR #7376:

Fix trigger_error() with E_USER_ERROR deprecation in wp_trigger_error().

PHP 8.4 deprecates the use ofย trigger_errror()ย withย E_USER_ERRORย as the error level, because this way of creating aย Fatal Error brings its own set of pitfalls (finallyย blocks not executing, destructors not executing). instead, the recommendation is to use an exception or do a hardย exit.

WP has its ownย wp_trigger_error()ย function, which under the hood callsย trigger_error(). If the WP version of the function passesย E_USER_ERRORย as theย $error_level, it too will hit the PHP 8.4 deprecation.

Now, there were basically three options:

  • Silence the deprecation until PHP 9.0 and solve this properly then. But that wouldnโ€™t even really buy time, let alone solve the problem. Thatโ€™s because before PHP 8.0, error silencing goes too far, applying to all errors. And starting with PHP 8.0, silencing doesnโ€™t apply to fatal errors.
  • Useย exit($status)ย whenย wp_trigger_error()ย is called withย E_USER_ERROR. But that would make the code untestable. It would also disable handling of these errors with custom error handlers. Neither of those are acceptable outcomes.
  • Throw an exception whenย wp_trigger_error()ย is called withย E_USER_ERROR. This is a fairly elegant solution, and it carries the least BC-breaking impact. There is some chance the error gets caught in aย try-catch, but thatโ€™s not actually a bad thing. Itโ€™s likely to only happen for errors that can be worked aroundโ€”and thatโ€™s actually an unexpected bonus.

This commit implements the third option, which:

  • Introduces a newย WP_Exceptionย class.
  • Starts usingย WP_Exceptionย in theย wp_trigger_error()ย function when theย $error_levelย is set toย E_USER_ERROR.

This change is covered by pre-existing tests, which have been updated to expect the exception instead of a PHP error.

Why not useย WP_Error?

Well, for one, this would lead to completely different behavior (BC).

WP_Errorย doesnโ€™t extendย Exception. So the program would not stop. Instead, it would keep running, which is a much bigger breaking change and carries security risks.ย WP_Errorย also doesnโ€™t natively trigger displaying/logging of the error message, so it would still need anย exitย with the error message, bringing us back to point 2 above.

Introducingย WP_Exceptionย delivers (essentially) the same behavior. It retains the fatal error and error message displaying/logging behaviors. Plus it introduces a base Exception class, which future exception classes can extend over time.

References:

Follow-up toย [56530].

Several other commits, fromย #62061, also help get the codebase ready for 8.4. You can find them after an exhaustive introduction to the changes coming to the new PHP.

Hereโ€™s the list, by GH pull request:

PR #7369 WP_HTML_Processor: fix implicitly nullable parameterย [1] in theย WP_HTML_Processorย class.

PR #7370ย fixes the deprecation of ย xml_set_object()ย for theย TestXMLParserย helper utility.

PR #7371ย fixes the same deprecation for theย IXR_Message::parse()ย method.

PR #7372ย  fixes the deprecation for theย AtomParser::parse()ย method.

PR #7373 fixes it for the ย MagpieRSS::__construct()ย method.

PR #7374ย replaces the call to the deprecatedย mysqli_ping()ย with theย DO 1ย query.

PR #7375ย adds a simple test for theย Text_Diff::_check()ย methodโ€”and fixes the bugbug A bug is an error or unexpected result. Performance improvements, code optimization, and are considered enhancements, not defects. After feature freeze, only bugs are dealt with, with regressions (adverse changes from the previous version) being the highest priority. that test finds!

PR #7377ย adds testing for PR #7376.

PR #7379ย Build/Test Tools: Enable running all the tests on PHP 8.4 once thereโ€™s a stable release of Xdebug 3.4.0.

Propsย @hellofromtonyaย for the commit message that formed the basis of this dev notedev note Each important change in WordPress Core is documented in a developers note, (usually called dev note). Good dev notes generally include a description of the change, the decision that led to this change, and a description of how developers are supposed to work with that change. Dev notes are published on Make/Core blog during the beta phase of WordPress release cycle. Publishing dev notes is particularly important when plugin/theme authors and WordPress developers need to be aware of those changes.In general, all dev notes are compiled into a Field Guide at the beginning of the release candidate phase. and to @peterwilsoncc for review and collaboration.

#6-7, #dev-notes, #field-guide

WordPress 6.7 Field Guide

This guide outlines major developer features and breaking changes in 6.7 and is published in the Release Candidaterelease candidate One 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). phase to help inform WordPress extending developers, CoreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. developers, and others.

There are more than 300 Core Trac tickets included in WordPress 6.7, 87 of which are enhancements and feature requests, and more than 200 bug fixes. This release includes 23 tickets focused on performance, 21 on accessibility, and 12 on modernizing code and applying coding standards. Changes in 6.7 are spread across 38 Core components.

This release includes 445 enhancements, 464 bug fixes, and 55 accessibility improvements for the BlockBlock Block is the abstract term used to describe units of markup that, composed together, form the content or layout of a webpage using the WordPress editor. The idea combines concepts of what in the past may have achieved with shortcodes, custom HTML, and embed discovery into a single consistent API and user experience. Editor (a.k.a. GutenbergGutenberg The Gutenberg project is the new Editor Interface for WordPress. The editor improves the process and experience of creating new content, making writing rich content much simpler. It uses โ€˜blocksโ€™ to add richness rather than shortcodes, custom HTML etc. https://wordpress.org/gutenberg/).

Below is a breakdown of the most important developer-related changes included in WordPress 6.7.


Table of contents


Block Editor

WordPress 6.7 brings 8 Gutenberg releases into core โ€“ 18.6, 18.7, 18.8, 18.9, 19.0, 19.1, 19.2, and 19.3. As in most recent WordPress releases a large part of the updates are related to the block editor and its features.

General Updates

Design Tools

The ongoing effort to consolidate design tools has continued and several blocks now support more additional design tools.

Other

There are also a large number of other changes which have been listed in a miscellaneous block editor changes dev notedev note Each important change in WordPress Core is documented in a developers note, (usually called dev note). Good dev notes generally include a description of the change, the decision that led to this change, and a description of how developers are supposed to work with that change. Dev notes are published on Make/Core blog during the beta phase of WordPress release cycle. Publishing dev notes is particularly important when plugin/theme authors and WordPress developers need to be aware of those changes.In general, all dev notes are compiled into a Field Guide at the beginning of the release candidate phase..

Interactivity APIAPI An API or Application Programming Interface is a software intermediary that allows programs to interact with each other and share data in limited, clearly defined ways. & Script Modules

WordPress 6.7 includes updates for the Interactivity API, such as a new way to interact with server state changes in client-side navigation. Also, script modules updates include improvements for loading existing scripts as module dependencies.

HTMLHTML HyperText Markup Language. The semantic scripting language primarily used for outputting content in web browsers. API

WordPress 6.7 includes many helpful updates to theย HTMLย API. This work includes a few new features and a major improvement to the HTML Processorโ€™s usability.

I18Ni18n Internationalization, or the act of writing and preparing code to be fully translatable into other languages. Also see localization. Often written with a lowercase i so it is not confused with a lowercase L or the numeral 1. Often an acquired skill.

Various internationalization (i18n) improvementsย are in WordPress 6.7, including:

Performance

WordPress 6.7 also brings some new performance focused enhancements, including a new way to register blocks that uses generated PHPPHP The web scripting language in which WordPress is primarily architected. WordPress requires PHP 7.4 or higher files to bypass performance bottlenecks of loading / parsing JSONJSON JSON, or JavaScript Object Notation, is a minimal, readable format for structuring data. It is used primarily to transmit data between a server and web application, as an alternative to XML. files and more.

Miscellaneous Developer Changes

Some other notable changes for developers included in WordPress 6.7 are:

Props to @fabiankaegy, and @davidbaumwald & @peterwilsoncc for review.

#6-7, #field-guide

WordPress 6.6 Field Guide

This guide outlines major developer features and breaking changes in 6.6 and is published in the Release Candidaterelease candidate One 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). cycle to help inform WordPress extending developers, CoreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. developers, and others.

There are almost 299 Core TRACTrac An open source project by Edgewall Software that serves as a bug tracker and project management tool for WordPress. tickets included in WordPress 6.6, 108 of which are enhancements and feature requests, 171 bug fixes, and 10 other blessed tasks. This time, 16 tickets focused on performance, 24 on accessibility, and 15 on modernizing code and applying coding standards. Changes in 6.6 are spread across 40 Core components.

This release includes 392 enhancements, 462 bugbug A bug is an error or unexpected result. Performance improvements, code optimization, and are considered enhancements, not defects. After feature freeze, only bugs are dealt with, with regressions (adverse changes from the previous version) being the highest priority. fixes, and 46 accessibilityAccessibility Accessibility (commonly shortened to a11y) refers to the design of products, devices, services, or environments for people with disabilities. The concept of accessible design ensures both โ€œdirect accessโ€ (i.e. unassisted) and โ€œindirect accessโ€ meaning compatibility with a personโ€™s assistive technology (for example, computer screen readers). (https://en.wikipedia.org/wiki/Accessibility) improvements for the Block Editor (a.k.a. gutenbergGutenberg The Gutenberg project is the new Editor Interface for WordPress. The editor improves the process and experience of creating new content, making writing rich content much simpler. It uses โ€˜blocksโ€™ to add richness rather than shortcodes, custom HTML etc. https://wordpress.org/gutenberg/).

Below is the breakdown of the most important developer-related changes included in WordPress 6.6.


Table of contents


BlockBlock Block is the abstract term used to describe units of markup that, composed together, form the content or layout of a webpage using the WordPress editor. The idea combines concepts of what in the past may have achieved with shortcodes, custom HTML, and embed discovery into a single consistent API and user experience. Editor

WordPress 6.6 brings 8 Gutenberg releases into core โ€“ 17.8, 17.9, 18.0, 18.1, 18.2, 18.3, 18.4, and 18.5. The Block Editor receives several improvements related to the ReactReact React is a JavaScript library that makes it easy to reason about, construct, and maintain stateless and stateful user interfaces. https://reactjs.org library, the Block APIAPI An API or Application Programming Interface is a software intermediary that allows programs to interact with each other and share data in limited, clearly defined ways., Themes, and more.

React

A new version of React and the new JSX transform is available in WordPress 6.6.

Block API

Some Block API improvements available in WordPress 6.6 include:

  • Unification of slots and extensibility APIs between the post and site editors
  • Improvements on isActive property of Block variations
  • Improvements on some core blocks
  • Block Bindings: Editing custom fields from connected blocks

Themes

WordPress 6.6 introduces several theme-related updates, including:

  • A new version 3 of theme.json
  • Uniform CSSCSS Cascading Style Sheets. specificity applied across core styles
  • Introduction of section styles to streamline the styling of blocks and their internal elements
  • Additional features for the grid layout type in blocks
  • Capabilitycapability Aย capabilityย is permission to perform one or more types of task. Checking if a user has a capability is performed by the current_user_can function. Each user of a WordPress site might have some permissions but not others, depending on theirย role. For example, users who have the Author role usually have permission to edit their own posts (the โ€œedit_postsโ€ capability), but not permission to edit other usersโ€™ posts (the โ€œedit_others_postsโ€ capability). to define site-wide background images in theme.json and the Site Editor

Miscellaneous Block Editor Changes

Some other updates to the Block Editor are also included in WordPress 6.6:

A table on design tools supported per block at WordPress 6.6 has been published as a reference.

Interactivity API

WordPress 6.6 includes updates for the Interactivity API, such as new async directives, support for derived state props from PHPPHP The web scripting language in which WordPress is primarily architected. WordPress requires PHP 7.4 or higher, integration with Preact Devtools, and new warning messages available when the SCRIPT_DEBUG configuration constant is enabled.

HTMLHTML HyperText Markup Language. The semantic scripting language primarily used for outputting content in web browsers. API

WordPress 6.6 includes a helpful maintenance release to theย HTMLย API. This work includes a few new features and a major improvement to the HTML Processorโ€™s usability. This continues the fast-paced development sinceย WordPress 6.5.

Thereโ€™s also a new data structure coming in WordPress 6.6 for the HTML API: theย WP_Token_Map.

Options API

Several changes have been made to the Options API to support an optimization for the autoloading behavior, and to create a way to apply further optimizations going forward.

PHPย Support

Support for PHP 7.0 and 7.1 is dropped in WordPress 6.6.

I18Ni18n Internationalization, or the act of writing and preparing code to be fully translatable into other languages. Also see localization. Often written with a lowercase i so it is not confused with a lowercase L or the numeral 1. Often an acquired skill.

Various internationalization (i18n) improvementsย are in WordPress 6.6, including:

Miscellaneous Developer Changes

Some other changes included in WordPress 6.6 are:

Other updates

One of the highlight features included in WordPress 6.6 is the automatic rollback of pluginPlugin A plugin is a piece of software containing a group of functions that can be added to a WordPress website. They can extend functionality or add new features to your WordPress websites. WordPress plugins are written in the PHP programming language and integrate seamlessly with WordPress. These can be free in the WordPress.org Plugin Directory https://wordpress.org/plugins/ or can be cost-based plugin from a third-party. auto-updates upon detecting PHP fatal errors.

New/Modified HooksHooks In WordPress theme and development, hooks are functions that can be applied to an action or a Filter in WordPress. Actions are functions performed when a certain event occurs in WordPress. Filters allow you to modify certain functions. Arguments used to hook both filters and actions look the same.

For a list of all new and updated Functions/Hooks/Classes/Methods in WP 6.6, please see this page on Developer Resources after the release: https://developer.wordpress.org/reference/since/6.6.0/.

Modified FilterFilter Filters are one of the two types of Hooks https://codex.wordpress.org/Plugin_API/Hooks. They provide a way for functions to modify data of other functions. They are the counterpart to Actions. Unlike Actions, filters are meant to work in an isolated manner, and should never have side effects such as affecting global variables and output. Hooks

New Filter Hooks

  • interactivity_process_directives [58234]
  • wp_theme_files_cache_ttl [58025]
  • wp_default_autoload_value [57920]
  • wp_max_autoloaded_option_size [57920]
  • wp_autoload_values_to_autoload [57920]
  • lang_dir_for_domain [58236]
  • activate_tinymce_for_media_description [58372]
  • site_status_autoloaded_options_action_to_perform [58332]
  • site_status_autoloaded_options_size_limit [58332]
  • site_status_autoloaded_options_limit_description [58332]

New Action Hooks

  • delete_post_{$post->post_type} [57853]
  • deleted_post_{$post->post_type} [57853]

Props to @sabernhardt, @milana_cap, @stevenlinx and @bph for review.

#6-6, #dev-notes, #field-guide

WordPress 6.5 Field Guide

This guide outlines major developer features and breaking changes in 6.5 and is published in the Release Candidaterelease candidate One 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). cycle to help inform WordPress extending developers, CoreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. developers, and others.

In Core TracTrac An open source project by Edgewall Software that serves as a bug tracker and project management tool for WordPress., there are almost 350 tickets: 99 of which are enhancements and feature requests, 216 bug fixes, and 35 other blessed tasks. This time, there are 20 tickets with a focus on performance, 19 for accessibility, and 23 for modernizing code and applying coding standards.

GutenbergGutenberg The Gutenberg project is the new Editor Interface for WordPress. The editor improves the process and experience of creating new content, making writing rich content much simpler. It uses โ€˜blocksโ€™ to add richness rather than shortcodes, custom HTML etc. https://wordpress.org/gutenberg/ included in this release has 373 enhancements, 515 bugbug A bug is an error or unexpected result. Performance improvements, code optimization, and are considered enhancements, not defects. After feature freeze, only bugs are dealt with, with regressions (adverse changes from the previous version) being the highest priority. fixes, and 65 accessibilityAccessibility Accessibility (commonly shortened to a11y) refers to the design of products, devices, services, or environments for people with disabilities. The concept of accessible design ensures both โ€œdirect accessโ€ (i.e. unassisted) and โ€œindirect accessโ€ meaning compatibility with a personโ€™s assistive technology (for example, computer screen readers). (https://en.wikipedia.org/wiki/Accessibility) improvements.

Changes in 6.5 are spread across 40 Core components. Below is the breakdown of the most important ones.


Table of contents


Principal Changes

Minimum System Requirement

The minimum version of MySQLMySQL MySQL is a relational database management system. A database is a structured collection of data where content, configuration and other options are stored. https://www.mysql.com has been raised from v5.0 to v5.5.5. (#60036)

BlockBlock Block is the abstract term used to describe units of markup that, composed together, form the content or layout of a webpage using the WordPress editor. The idea combines concepts of what in the past may have achieved with shortcodes, custom HTML, and embed discovery into a single consistent API and user experience. Editor

A new attribute $variation_callback has been introduced in WP_Block_Type. This limits the ability to modify variations by reference directly as was done previously.

Performance improvements for registering block type variations with callbacks
https://make.wordpress.org/core/2024/02/29/performance-improvements-for-registering-block-variations-with-callbacks/

New Features

Block Editor

WordPress 6.5 brings 10 Gutenberg releases into core โ€“ 16.8, 16.9, 17.0, 17.1, 17.2, 17.3, 17.4, 17.5, 17.6, and 17.7. You will find new features, APIs, and various improvements. Highlights include the Interactivity APIAPI An API or Application Programming Interface is a software intermediary that allows programs to interact with each other and share data in limited, clearly defined ways., Font Library, and Block Bindings API.

The Interactivity API gives you a simplified and standardized way of building interactive front-end experiences with Blocks while offering optimal performance. Previously, this can only be done with third-party libraries. You may use it in scenarios such as fetching search results instantly or letting visitors interact with content in real time.

Interactivity API in 6.5
https://make.wordpress.org/core/2024/03/04/interactivity-api-dev-note/

The Block Bindings API gives you the ability to link Core Block attributes to the values of Custom Fields without needing to create custom Blocks. You can extend this capabilitycapability Aย 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). further to connect Blocks to any dynamic content.

Block Bindings API
https://make.wordpress.org/core/2024/03/06/new-feature-the-block-bindings-api/

The Font Library comes with a set of APIs that lets you enable, adapt, and disable fonts.

Font Library API
https://make.wordpress.org/core/2024/03/14/new-feature-font-library/

Block metadata viewScriptModule field in 6.5
https://make.wordpress.org/core/2024/03/04/block-metadata-viewscriptmodule-field-in-6-5/

Updates to Block Hooks in 6.5
https://make.wordpress.org/core/2024/03/04/updates-to-block-hooks-in-6-5/

Unification of the site and post editors in 6.5
https://make.wordpress.org/core/2024/03/05/unification-of-the-site-and-post-editors-in-6-5/

Performance improvements for registering block variations with callbacks
https://make.wordpress.org/core/2024/02/29/performance-improvements-for-registering-block-variations-with-callbacks/

Miscellaneous Editor changes in WordPress 6.5
hthttps://make.wordpress.org/core/2024/03/09/miscellaneous-editor-changes-in-wordpress-6-5/

HTMLHTML HyperText Markup Language. The semantic scripting language primarily used for outputting content in web browsers. API

WordPress 6.5 brings significant updates to the HTML API. The tagtag A directory in Subversion. WordPress uses tags to store a single snapshot of a version (3.6, 3.6.1, etc.), the common convention of tags in version control systems. (Not to be confused with post tags.) processer has received a major overhaul and a further amount of the HTML specification is now supported. If you have been sub-classing WP_HTML_Tag_Processor, there are some specific changes you should pay attention to.

Updates to the HTML API in 6.5
https://make.wordpress.org/core/2024/03/04/updates-to-the-html-api-in-6-5/

I18Ni18n Internationalization, or the act of writing and preparing code to be fully translatable into other languages. Also see localization. Often written with a lowercase i so it is not confused with a lowercase L or the numeral 1. Often an acquired skill.

The Performant Translations feature plugin has been merged into Core. The new translation system is much faster and uses less memory with the new .l10n.php format; it also continues to support all three existing translationtranslation The process (or result) of changing text, words, and display formatting to support another language. Also see localization, internationalization. formats: .l10n.php, .mo, and .po files. Two new filters translation_file_format and load_translation_file are introduced.

I18N Improvements in 6.5 (Performant Translations)
https://make.wordpress.org/core/2024/02/27/i18n-improvements-6-5-performant-translations/

Media

AVIF support comes to 6.5. AVIF is a modern image format that can be up to 50% smaller than JPEGs while maintaining the same image quality. You can now upload/edit/resize/save AVIF images if supported by your hosting environment. The way you operate on AVIF images remains the same as with other existing image formats. If you run multisitemultisite Used to describe a WordPress installation with a network of multiple blogs, grouped by sites. This installation type has shared users tables, and creates separate database tables for each blog (wp_posts becomes wp_0_posts). See also network, blog, site, there is a FAQ just for you.

WordPress 6.5 adds AVIF support
https://make.wordpress.org/core/2024/02/23/wordpress-6-5-adds-avif-support/

Script Loader

The Script Modules API brings native JavaScriptJavaScript JavaScript 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 Module support to 6.5 and provides two modules for use with the WordPress Interactivity API.

It is strongly recommended that developers currently utilizing JavaScript modules in their extensions migrate to the Script Modules API.

Script Modules in 6.5
https://make.wordpress.org/core/2024/03/04/script-modules-in-6-5/

Upgrade/Install

The Plugin Dependencies feature plugin has been merged into Core.

Introducing Plugin Dependencies in WordPress 6.5
https://make.wordpress.org/core/2024/03/05/introducing-plugin-dependencies-in-wordpress-6-5/

Key Info

A pluginPlugin A plugin is a piece of software containing a group of functions that can be added to a WordPress website. They can extend functionality or add new features to your WordPress websites. WordPress plugins are written in the PHP programming language and integrate seamlessly with WordPress. These can be free in the WordPress.org Plugin Directory https://wordpress.org/plugins/ or can be cost-based plugin from a third-party.โ€™s dependencies can be declared by using a new Requires Plugins headerHeader The 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. in the dependent pluginโ€™s main file. The header must contain a comma-separated list of WordPress.orgWordPress.org The community site where WordPress code is created and shared by the users. This is where you can download the source code for WordPress core, plugins and themes as well as the central location for community conversations and organization. https://wordpress.org/-formatted slugs.

Example:

/**
* Plugin Name: Bridge for Foo and Bar
* Requires Plugins: foo, bar
*/

Dependency slug conditions:

  • Dependent plugins hosted on WordPress.org can only declare dependencies that are also hosted on WordPress.org.
  • Dependent plugins not hosted on WordPress.org can declare dependencies whether hosted on WordPress.org or elsewhere.

Declaring a plugin dependency places the following requirements:

  • Requirements on dependent plugins:
    • Cannot be installed until its dependencies are installed.
    • Cannot be activated until its dependencies are activated.
  • Requirements on dependency plugins:
    • Cannot be deactivated while its dependents are activated.
    • Cannot be deleted while its dependents are installed.

The following features are not currently supported:

  • Version management
  • Must-Use plugins as dependencies
  • Themes that require plugins
  • Automatic deactivation of dependent plugins

A new filterFilter Filters are one of the two types of Hooks https://codex.wordpress.org/Plugin_API/Hooks. They provide a way for functions to modify data of other functions. They are the counterpart to Actions. Unlike Actions, filters are meant to work in an isolated manner, and should never have side effects such as affecting global variables and output. wp_plugin_dependencies_slug has been introduced to allow for alterations to dependency slugs.

A new class WP_Plugin_Dependencies has been introduced with public API methods available.

The UIUI User interface of the plugin row the plugin row has been changed to reflect a pluginโ€™s dependencies/dependents. The UI of dependent plugin cards has been changed to reflect its dependencies, with modal links to install and activate them first.

Automatic redirection from Plugins > Add New is no longer performed upon activation of a plugin.

Props to @cosdev for review.

Additional Changes

External Libraries

The following libraries were updated to the latest versions:

getID3 has been updated to v1.9.23 (#59683)

PHPMailer has been updated to v6.9.1 (#59966)

wordpress/scripts version 17 has dropped official support for unmaintained Node.js versions. The oldest supported Node.js version is now Node.js 18. (Misc Editor Dev Changes)

Miscellaneous Developer Changes

Miscellaneous developer changes in WordPress 6.5
https://make.wordpress.org/core/2024/03/08/miscellaneous-developer-changes-in-wordpress-6-5/

Other Updates

Themes

Classic themes can now opt in to appearance tools support. (#60118)

Media

Control of jpeg progressive image output has been enabled. A new image_save_progressive filter has been added, which controls whether intermediate image sizes are saved in a progressive format (when available). By default, progressive image output is disabled, matching the current behavior. (#21668)

Caddy web server: support pretty permalinks when Caddy web server is detected. (#41877)

Rest APIREST API The REST API is an acronym for the RESTful Application Program Interface (API) that uses HTTP requests to GET, PUT, POST and DELETE data. It is how the front end of an application (think โ€œphone appโ€ or โ€œwebsiteโ€) can communicate with the data store (think โ€œdatabaseโ€ or โ€œfile systemโ€) https://developer.wordpress.org/rest-api/

A featured_media field for featured imageFeatured image A featured image is the main image used on your blog archive page and is pulled when the post or page is shared on social media. The image can be used to display in widget areas on your site or in a summary list of posts. (also known as a poster image) has been added to the REST API wp/v2/media attachments endpoint. (#41692)

Site Health

Site ID has been included in the debug data on multisite installations. (#60081)

Upgrade/Install

During bulk upgrades, a theme upgrade is now checked for satisfying the minimum WordPress version or the server PHPPHP The web scripting language in which WordPress is primarily architected. WordPress requires PHP 7.4 or higher version. This was previously done for plugins, but not themes. (#59758)

New/Modified HooksHooks In WordPress theme and development, hooks are functions that can be applied to an action or a Filter in WordPress. Actions are functions performed when a certain event occurs in WordPress. Filters allow you to modify certain functions. Arguments used to hook both filters and actions look the same.

For a list of all new and updated Functions/Hooks/Classes/Methods in WP 6.5, please see this page on Developer Resources after the release:
https://developer.wordpress.org/reference/since/6.5.0/

New Action Hooks

  • after_plugin_row_meta (#22316)

New Filter Hooks

  • font_dir (#60652)
  • get_block_type_uses_context (#60525)
  • script_module_loader_src (#60742)
  • pre_get_language_files_from_path (#59656)
  • rest_wp_font_face_collection_params (#59166)
  • rest_prepare_wp_font_face (#59166)
  • rest_wp_font_family_collection_params (#59166)
  • rest_prepare_wp_font_family (#59166)
  • rest_font_collections_collection_params (#59166)
  • rest_prepare_font_collection (#59166)
  • new_admin_email_subject (#59250)
  • wp_is_rest_endpoint (#42061)
  • image_save_progressive (#21668)
  • wp_admin_canonical_url (#59545)
  • wp_plugin_dependencies_slug (#22316)
  • hooked_block (#59572)
  • hooked_block_{$block_type} (#59572)
  • get_block_type_variations (#59969)
  • translation_file_format (#59656)
  • load_translation_file (#59656)

Props to @swissspidy for technical review, to @get_dave and @youknowriad for technical review (Editor), to @jorbin for technical/copy review.

#6-5, #field-guide

WordPress 6.4 Field Guide

This guide shares more in-depth changes that you will find in 6.4 and is published in the Release Candidaterelease candidate One 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). cycle to help inform WordPress developers, extenders, and others. The releaseย squadย and many contributors across the global project have worked to bring these changes, and you can follow this work and add to the contribution using the ticketticket Created for both bug reports and feature development on the bug tracker. systemsย in Tracย andย GitHubGitHub GitHub is a website that offers online implementation of git repositories that can easily be shared, copied and modified by other developers. Public repositories are free to host, private repositories require a paid subscription. GitHub introduced the concept of the โ€˜pull requestโ€™ where code changes done in branches by contributors can be reviewed and discussed before being merged by the repository owner. https://github.com/.

Some fascinating stats! TracTrac An open source project by Edgewall Software that serves as a bug tracker and project management tool for WordPress. has about 268 tickets, 113 of which are enhancements and feature requests, 134 bug fixes, and 21 other tasks. This time, there are more than 64 tickets with a focus on performance, 17 for accessibility, and 16 for modernizing code and applying coding standards. GutenbergGutenberg The Gutenberg project is the new Editor Interface for WordPress. The editor improves the process and experience of creating new content, making writing rich content much simpler. It uses โ€˜blocksโ€™ to add richness rather than shortcodes, custom HTML etc. https://wordpress.org/gutenberg/โ€™s GitHub repo brings more than 1,400 updates/changes, providing to coreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. more than 420 enhancements, 445 bugbug A bug is an error or unexpected result. Performance improvements, code optimization, and are considered enhancements, not defects. After feature freeze, only bugs are dealt with, with regressions (adverse changes from the previous version) being the highest priority. fixes, and 42 accessibility improvements.

Changes in 6.4 are spread across about 45 core components. Below is the breakdown of the most important ones.

You can also find all Developer Notes relating to 6.4 as they continue to be published until the release goes live. You can follow them using this tag.

Updated Nov 14, 2023: overview posts available on accessibility and performance improvements in 6.4.

BlockBlock Block is the abstract term used to describe units of markup that, composed together, form the content or layout of a webpage using the WordPress editor. The idea combines concepts of what in the past may have achieved with shortcodes, custom HTML, and embed discovery into a single consistent API and user experience. editor

WordPress 6.4 is bringing six Gutenberg releases into the core โ€“ 16.2, 16.3, 16.4, 16.5, 16.6, 16.7. You will find Block HooksHooks In WordPress theme and development, hooks are functions that can be applied to an action or a Filter in WordPress. Actions are functions performed when a certain event occurs in WordPress. Filters allow you to modify certain functions. Arguments used to hook both filters and actions look the same., the ability to register their own media categories, changes to the @wordpress/componentsย package, updates for the user interface components, and many other changes.

WordPress 6.4 introducesย Blockย Hooksย (#53987), a feature that provides an extensibility mechanism for Block Themes. This is the first step in emulating WordPressโ€™ย Hooksย concept that allows developers to extend Classic Themes using filters and actions.

From WordPress 6.4, extenders can register their own inserter media categories and provide users with more options from which to choose.

6.4 brings in a number of notable changes to theย @wordpress/componentsย package.

There are a number of other changes, including a new background image block support, fluid typography, disabled layout controls globally or on a block basis by theme.json, Stabilized APIs for InnerBlocks, and much more.

New dev notedev note Each important change in WordPress Core is documented in a developers note, (usually called dev note). Good dev notes generally include a description of the change, the decision that led to this change, and a description of how developers are supposed to work with that change. Dev notes are published on Make/Core blog during the beta phase of WordPress release cycle. Publishing dev notes is particularly important when plugin/theme authors and WordPress developers need to be aware of those changes.In general, all dev notes are compiled into a Field Guide at the beginning of the release candidate phase. (November 13, 2023) โ€“ For singular content, the output of block templates, for example, (single.htmlย orย page.html) will be automatically wrapped in the main query loopLoop The Loop is PHP code used by WordPress to display posts. Using The Loop, WordPress processes each post to be displayed on the current page, and formats it according to how it matches specified criteria within The Loop tags. Any HTML or PHP code in the Loop will be processed on each post. https://codex.wordpress.org/The_Loop.

Adminadmin (and super admin) notices

Two new functions abstract the HTMLHTML HyperText Markup Language. The semantic scripting language primarily used for outputting content in web browsers. markup generation to reduce the maintenance burden, encourage consistency, and enable argument and message filtering for all admin notices used widely in WordPress Core and the extender community.

General

A developer note will be added later on the following change:

Introduce wp_trigger_error() to complement _doing_it_wrong() #57686

HTML APIAPI An API or Application Programming Interface is a software intermediary that allows programs to interact with each other and share data in limited, clearly defined ways.

WordPress 6.4 includes continued development of the HTML API, including the introduction of a minimal HTML Processor with the concept of breadcrumbs, and makes it possible to, for example, search for images that are direct children of a DIV.

Also included in 6.4, is the addition of a couple of CSSCSS Cascading Style Sheets./class helpers in the Tag Processor, which will make it possible to search for a tagtag A directory in Subversion. WordPress uses tags to store a single snapshot of a version (3.6, 3.6.1, etc.), the common convention of tags in version control systems. (Not to be confused with post tags.) containing more than one class name, or to search for a tag not containing a given class name.

Media

New WordPress installations will now have attachment pages fully disabled for new sites. This will benefit SEO by avoiding attachment pages created by default, which were indexed by search engines and could have led to bad results for users and site owners. The change introduces a wp_attachment_pages_enabledย database option to control the attachment pagesโ€™ behavior. In the dev note, there is information on how to update existing sites.

Additional performance improvements

A significant part of the 6.4 release brings performance improvements and greater efficiency to WordPress. An overview post on performance improvements in 6.4 is also available.

New functionsย get_options(), wp_prime_option_caches(), andย wp_set_option_autoload_values()ย allow an enhanced performance of retrieving options from the database.

WordPress 6.4 brings many improvements to template loading.

  • Performance gains have been achieved by introducing caching using an object cache in a new method calledย WP_Theme::get_block_patterns().
  • Unnecessary checks were removed if a theme file existed in the theme functions that enhanced efficiency and performance. These improvements in the Themes API mean the current themeโ€™s stylesheet directory is checked to ensure it matches the template directory, before further file existence checks are done.ย Improvements are also in the performance of get_block_theme_folders(). This is through a new method,ย WP_Theme::get_block_template_folders(), and improved error handling. The result is a quicker and more efficient lookup of block template folders within themes. WordPress developers and users can anticipate improved performance, reduced I/O overhead, and a smoother experience when working with block themes.

Improved image loading

Several enhancements to the wp_get_loading_optimization_attributes() function, which provides a central place to manage loading optimization attributes, specifically for images and iframes.ย 

Script Loader

In WordPress 6.4, script loading strategies are now employed for frontend scripts in core and bundled themes. For the most part, theย deferย loading strategy is used since it is more consistent in its loading behavior, in that aย deferย script always executes once the DOM has loaded; a script with async may actuallyย blockย rendering if it is already cached. Additionally, loading with deferย has been moved from the footer to the headย so that they are discovered earlier while the document is loading and can execute sooner once the document is loaded.

Style loading

Thisย dev noteย highlights the changes made in WordPress 6.4 to style loading. The main focus of the changes was to replace manually createdย styleย tags printed at theย wp_headย action with calls toย wp_add_inline_style().

More performance-related changes

  • TaxonomyTaxonomy A taxonomy is a way to group things together. In WordPress, some common taxonomies are category, link, tag, or post format. https://codex.wordpress.org/Taxonomies#Default_Taxonomies.: The double sanitization in the get_term function has been stopped. This will prevent the unnecessary calls to sanitize_term, which was detrimental to performance. Trac ticket #58329.
  • Themes: Theย TEMPLATEPATHย andย STYLESHEETPATHย constants have been deprecated.ย get_template_directory()ย andย get_stylesheet_directory()ย should be used instead. Trac ticket #18298

And thereโ€™s more!

Some of the additional changes in 6.4 to highlight.

External libraries

jQuery has been updated to version 3.7.1. This release fixes a regressionregression A software bug that breaks or degrades something that previously worked. Regressions are often treated as critical bugs or blockers. Recent regressions may be given higher priorities. A "3.6 regression" would be a bug in 3.6 that worked as intended in 3.5. from jQuery 3.6.0 that resulted in rounded dimensions for elements in Chrome and Safari. Also, a (mostly) internal Sizzle method, jQuery.find.tokenize that was on the jQuery object was accidentally removed when they removed Sizzle in jQuery 3.7.0. That method has been restored.

Trac Ticket #59322

Users

WordPress 6.4 brings a number of key improvements to theย HTMLย markup of theย wp-login.phpย page to make its structure more optimal and allow developers to have more customized individual styling flexibility. #30685

Clarify the โ€œAdd Newโ€ links in the Admin for better accessibilityAccessibility Accessibility (commonly shortened to a11y) refers to the design of products, devices, services, or environments for people with disabilities. The concept of accessible design ensures both โ€œdirect accessโ€ (i.e. unassisted) and โ€œindirect accessโ€ meaning compatibility with a personโ€™s assistive technology (for example, computer screen readers). (https://en.wikipedia.org/wiki/Accessibility)

In WordPress 6.4, the default values for the add_new label changed to include the type of content. This matches add_new_item and provides more context for better accessibility. The default value is โ€˜Add New Typeโ€™ for both hierarchical and non-hierarchical types. If youโ€™ve previously used a label such as:

'add_new' => _x( 'Add New', 'Book', 'my-plugin' )

you are encouraged to change it to

'add_new' => __( 'Add New Book', 'my-plugin' )

Trac ticket #47125

Props to @swissspidy for this dev note.

Integration testing requirement change

PHPUnit Polyfills 1.1.0 is required for running integration tests with WordPress 6.4.

Trac ticket #59510

Props to @jrf for the information for this dev note.

HTTPHTTP HTTP is an acronym for Hyper Text Transfer Protocol. HTTP is the underlying protocol used by the World Wide Web and this protocol defines how messages are formatted and transmitted, and what actions Web servers and browsers should take in response to various commands. API

  • HTTP API: WP_Http_Curlย andย WP_Http_Streamsย classes and filters have been deprecated as these classes have not been used in WordPress Core since the introduction of the Requests library. Trac ticket #58705

RevisionsRevisions The WordPress revisions system stores a record of each saved draft or published update. The revision system allows you to see what changes were made in each revision by dragging a slider (or using the Next/Previous buttons). The display indicates what has changed in each revision.

Revisions are now supported for post metaMeta Meta is a term that refers to the inside workings of a group. For us, this is the team that works on internal WordPress sites like WordCamp Central and Make WordPress. on an opt-in basis. Trac ticket #20564


Props to @costdev, @bph, @nalininonstopnewsuk, @codente, @spacedmonkey, @desrosj, @flixos90 for input on this Field GuideField guide The field guide is a type of blogpost published on Make/Core during the release candidate phase of the WordPress release cycle. The field guide generally lists all the dev notes published during the beta cycle. This guide is linked in the about page of the corresponding version of WordPress, in the release post and in the HelpHub version page., and @joemcgill, @clarkeemily, @cbringmann, @akshaya, @611shabnam, and @priethor for peer review.
Thank you to all those involved in collating, writing, and editing developer notes relating to 6.4.

#6-4, #dev-notes, #dev-notes-6-4, #field-guide

WordPress 6.3 Field Guide

This guide shares more of the in-depth changes that you will find in 6.3 and is published with Release Candidaterelease candidate One 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 to help inform WordPress developers, extenders, and others.

In CoreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. TracTrac An open source project by Edgewall Software that serves as a bug tracker and project management tool for WordPress., there are almost 371 tickets: 127 of which are enhancements and feature requests, 208 bug fixes, and 36 other blessed tasks. This time, there are 67 tickets with a focus on performance, 23 for accessibility, and 36 for modernizing code and applying coding standards.

GutenbergGutenberg The Gutenberg project is the new Editor Interface for WordPress. The editor improves the process and experience of creating new content, making writing rich content much simpler. It uses โ€˜blocksโ€™ to add richness rather than shortcodes, custom HTML etc. https://wordpress.org/gutenberg/ included in this release has 1737 pull requests: 307 enhancements, 481 bugbug A bug is an error or unexpected result. Performance improvements, code optimization, and are considered enhancements, not defects. After feature freeze, only bugs are dealt with, with regressions (adverse changes from the previous version) being the highest priority. fixes, and 55 accessibilityAccessibility Accessibility (commonly shortened to a11y) refers to the design of products, devices, services, or environments for people with disabilities. The concept of accessible design ensures both โ€œdirect accessโ€ (i.e. unassisted) and โ€œindirect accessโ€ meaning compatibility with a personโ€™s assistive technology (for example, computer screen readers). (https://en.wikipedia.org/wiki/Accessibility) improvements.

Changes in 6.3 are spread across 43 core components. Below is the breakdown of the most important ones.

BlockBlock Block is the abstract term used to describe units of markup that, composed together, form the content or layout of a webpage using the WordPress editor. The idea combines concepts of what in the past may have achieved with shortcodes, custom HTML, and embed discovery into a single consistent API and user experience. Editor

WordPress 6.3 is bringing 10 Gutenberg releases into the core โ€“ 15.2, 15.3, 15.4, 15.5, 15.6, 15.7, 15.8, 15.9, 16.0, and 16.1. You will find new Block APIs, Block properties, Block editing mode, Block layout support, color classes, Command Palette, Reusable Blocks renamed to Synced Patterns, and many other changes in these 10 pluginPlugin A plugin is a piece of software containing a group of functions that can be added to a WordPress website. They can extend functionality or add new features to your WordPress websites. WordPress plugins are written in the PHP programming language and integrate seamlessly with WordPress. These can be free in the WordPress.org Plugin Directory https://wordpress.org/plugins/ or can be cost-based plugin from a third-party. releases.

Bundled Theme

Bundled default themes have dropped support for Internet Explorer scripts and styles, which also removed skip-link focus fix script for navigating by keyboard in Internet Explorer and old versions of Chrome.

In addition, special stylesheets and HTML5 Shiv scripts are not enqueued or included in the header.php template for the following themes: Twenty Thirteen (its conditional code is also removed), Twenty Fifteen, and Twenty Seventeen. (#56699)

Theme developers who wish to continue to support IE can add code snippets to their themes that restore the functionalities.

Cache APIAPI An API or Application Programming Interface is a software intermediary that allows programs to interact with each other and share data in limited, clearly defined ways.

The Cache API has undergone several improvements: introducing new cache groups specific to queries and offering developers greater control over the handling of objects within these groups.

You can now set the expiration time for a cache group, clear specific cache groups, set last changed value for a cache group, and declare specific cache groups as non-persistent. With these changes, you can implement your own custom cache invalidation strategies, allowing you to invalidate an entire cache group programmatically.

Other improvements include improved validation, ensuring that only an array of unique integers are passed as input.

Filesystem API

Hidden (. prefixed) files can now be included in list_files() with a new optional $include_hidden parameter. Defaults to false for backward compatibility. (#53659)

General

A new constant WP_DEVELOPMENT_MODE is introduced to signify context-specific development mode. The constant can have the value โ€œcoreโ€œ, โ€œpluginโ€œ, โ€œthemeโ€œ, โ€œallโ€œ, or an empty string. The latter of which means no development mode, which is also the default.

Two new helper functions wp_is_development_mode( $mode ) and wp_get_development_mode() are introduced as the recommended ways to interact with this new configuration value.

The different development modes affect specific caching functionality; for example, caching is only bypassed during theme development, but not during core development. (#57487)

The current value of the WP_DEVELOPMENT_MODE constant is also accessible under Tools > Site Health > Info, in the WordPress Constants section. (#58646)

WP_DEVELOPMENT_MODE serves as an addition to existing debugging constants: WP_DEBUG, SCRIPT_DEBUG, and WP_ENVIRONMENT_TYPE.

PHPPHP The web scripting language in which WordPress is primarily architected. WordPress requires PHP 7.4 or higher Support

Support for PHP 5 has been dropped in WordPress 6.3.

The new minimum supported version of PHP is 7.0.0.

The recommended version of PHP remains at 7.4 or greater. (#57345) (blog post announcement)

I18Ni18n Internationalization, or the act of writing and preparing code to be fully translatable into other languages. Also see localization. Often written with a lowercase i so it is not confused with a lowercase L or the numeral 1. Often an acquired skill.

Improvements include the ability to short-circuit load_textdomain filterFilter Filters are one of the two types of Hooks https://codex.wordpress.org/Plugin_API/Hooks. They provide a way for functions to modify data of other functions. They are the counterpart to Actions. Unlike Actions, filters are meant to work in an isolated manner, and should never have side effects such as affecting global variables and output. and reducing loading time for just-in-time translationtranslation The process (or result) of changing text, words, and display formatting to support another language. Also see localization, internationalization..

Media

The media component has been updated with several enhancements that improve load time performance for content with images. WordPress now automatically adds the fetchpriority attribute with a value of โ€œhighโ€ to the image that it determines most likely to be the โ€œLCP (Largest Contentful Paint) imageโ€. Other enhancements have been implemented to improve the automatic handling of lazy-loading via the loading attribute to more reliably detect when to omit the attribute from some images.

Metadata API

Metadata API has undergone significant improvement in the area of lazy loading capabilitiescapability Aย 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). for term, comment, and site metadata. Lazy loading refers to a technique where data is loaded only when it is actually needed. This reduces unnecessary database queries or cache lookups and improves overall performance.

Performance

The function get_pages() has been revised to utilize WP_Query internally. This improvement significantly reduces the complexity of the get_pages() function by offloading the burden of querying databases and handling the cache to WP_Query. (#55806 and #12821)

Script Loader

Support for HTMLHTML HyperText Markup Language. The semantic scripting language primarily used for outputting content in web browsers. 5 โ€œasyncโ€ and โ€œdeferโ€ attributes has been added, which allows developers to register scripts with a loading strategy. The loading strategy can be enabled by overloading the $in_footer parameter as an array that contains the loading strategy to the wp_register_script() and wp_enqueue_script() functions. If present, the loading strategy attribute will be added to the script tagtag A directory in Subversion. WordPress uses tags to store a single snapshot of a version (3.6, 3.6.1, etc.), the common convention of tags in version control systems. (Not to be confused with post tags.).

The intended loading strategy that you pass via the $args parameter may not be the final (chosen) strategy since the scriptโ€™s dependency tree (its dependencies and/or dependents) is taken into account, but it will never be detrimental to (or stricter than) the intended strategy.

Upgrade/Install

The rollback feature will automatically restore the previously installed plugin/theme version if the manual update process fails. This enhancementenhancement Enhancements are simple improvements to WordPress, such as the addition of a hook, a new feature, or an improvement to an existing feature. makes the update process more reliable and ensures that if a plugin or theme update fails, the previous version can be safely restored and the website remains available to its users.

  • When updating a plugin or theme, the old version is moved to a temporary backup directory:
    • wp-content/upgrade-temp-backup/plugins/[plugin-slug] for plugins
    • wp-content/upgrade-temp-backup/themes/[theme-slug] for themes.
  • If the update fails, then the backup kept in the temporary backup directory is restored to its original location.
  • If the update succeeds, the temporary backup is deleted.

To further help troubleshoot plugin and theme updates, two new checks were added to the Site Health screen:

  • Check to make sure the upgrade-temp-backup directory is writable.
  • Check there is enough disk-space available to safely perform updates.

Please take note, the rollback feature cannot be used to โ€œroll backโ€ a plugin/theme to a previous version after a successful update (the feature is only applicable to failed manual updates).

Users

An enhancement has been made to the caching of database queries in WP_User_Query class, the only remaining query class lacking this caching capabilitycapability Aย 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)..

All calls to WP_User_Query will be automatically cached by default, unless setting the relevant parameters otherwise. You can also globally disable caching by using a filter.

A new global cache group named โ€˜user-queriesโ€˜ is introduced to store the results of queries. Caching will be disabled for user queries that utilize the field parameter and request more than 3 fields.

Finally, plugins utilizing the users_pre_query hook to modify the returned values will bypass caching and the behaviors will remain the same as before.

Other Developer Updates

But wait, there is more!

Cron API

The cron memory limit has been increased to WP_MAX_MEMORY_LIMIT (256MB by default) during cron event processing if the default memory limit is lower than this value. Note that this will not affect external means of processing cron events, such as the wp cron command in WP-CLIWP-CLI WP-CLI is the Command Line Interface for WordPress, used to do administrative and development tasks in a programmatic way. The project page is http://wp-cli.org/ https://make.wordpress.org/cli/, server-level crontab events, or any other cron event processing mechanism that bypasses wp-cron.php.

A new filter cron_memory_limit has been introduced to adjust this value if necessary. (#56628)

Editor

A new source attribute is added to Block patterns allowing them to be filtered by that source. (#58622)

Embeds

  • Anghami has been added as a trusted oEmbed provider. (#49850)
  • Support for TikTok creator profiles has been added. (#55784)

Formatting

  • Added aria content attributes aria-controls, aria-expanded, and aria-current to allowed attributes in KSES. (#55370)
  • CSSCSS Cascading Style Sheets. repeat() function support has been added for KSES. (#58551)

General

  • In KSES, the safecss_filter_attr() function has been revised to allow the filter property to accept a URLURL A specific web address of a website or web page on the Internet, such as a websiteโ€™s URL www.wordpress.org, as a reference to an SVG filter element. (#57780)
  • Replacing strpos() and substr() for code modernization (note: for PHP versions lower than v8.0, the three replacement functions have been polyfilled since WP v5.9):
    • The usage of 0 === strpos() or 0 !== strpos() has been replaced with str_starts_with().
    • The usage of false === strpos() or false !== strpos() has been replaced with str_contains().
    • The usage of $needle === substr( $string, 0, $length ) has been replaced with str_starts_with( $haystack, $needle ). The value of $length should be the length of $needle.
    • The usage of $needle === substr( $string, $offset ) where $offset is negative has been replacedย  with str_ends_with( $haystack, $needle ). The absolute value of $offset should be the length of $needle. (#58012, #58206, #58220)

Performance

  • In the WP_Comments_List_Table class, when the function get_comments() is called, the parameter update_comment_post_cache is passed with a value of true. This primes all the related posts for the displayed comments and improves performance. (#57802)
  • The _wp_array_get() function is the most called function on the front end of a site, up to ~23k times on each page-load when using a block theme. A few minor performance optimizations have been introduced, which adds up to a noticeable improvement. (#58376)

Quick/Bulk Edit

A new bulk_edit_posts action hook is introduced, which triggers after processing the post data for bulk edit and before it returns its results. For example, it allows developers to save additional data without having to perform any .ajax() call. (#28112)

REST APIREST API The REST API is an acronym for the RESTful Application Program Interface (API) that uses HTTP requests to GET, PUT, POST and DELETE data. It is how the front end of an application (think โ€œphone appโ€ or โ€œwebsiteโ€) can communicate with the data store (think โ€œdatabaseโ€ or โ€œfile systemโ€) https://developer.wordpress.org/rest-api/

  • The Themes REST API can now indicate whether a theme supports the Site Editor by adding an is_block_theme property to each theme in the wp/v2/themes API response. (#58123)
  • A revisionsRevisions The WordPress revisions system stores a record of each saved draft or published update. The revision system allows you to see what changes were made in each revision by dragging a slider (or using the Next/Previous buttons). The display indicates what has changed in each revision. endpoint for global styles, /wp/v2/global-styles/revisions, has been added to the REST API. (#58524)
  • WP_REST_Templates_Controller has a new modified field for template and template part objects that returns post modified datetime for Templates. (#58540)

Revisions

When a post is saved with an unchanged autosave, the existing autosave will be returned, instead of returning an error. (#58739)

Themes

A new public function wp_get_remote_theme_patterns() has been added to query the patterns datum from theme.json and substitutes current usage of private APIs. (#58460)

New Action HooksHooks In WordPress theme and development, hooks are functions that can be applied to an action or a Filter in WordPress. Actions are functions performed when a certain event occurs in WordPress. Filters allow you to modify certain functions. Arguments used to hook both filters and actions look the same.

New Filter Hooks

  • plugins_list (#57278)
  • pre_load_textdomain (#58035)
  • wp_get_attachment_image_context (#58212)
  • get_pages_query_args (#12821)
  • cron_memory_limit (56628)
  • nav_menu_item_attributes (#57140)
  • nav_menu_link_attributes (#57140)
  • nav_menu_submenu_attributes (#57140)
  • pre_wp_setup_nav_menu_item (#56577)
  • site_editor_no_javascript_message (#56228)
  • image_edit_thumbnails_separately (#57685)
  • wp_navigation_should_create_fallback (#58750)
  • wp_min_priority_img_pixels (#58235)

Modified Action/Filter Hooks

  • rest_allowed_cors_headers (#57752) and rest_exposed_cors_headers (#57752)
  • edit_custom_thumbnail_sizes has been deprecated and replaced with image_edit_thumbnails_separately (#57685)

Deprecated Files

  • The wp-admin/media.php file has been deprecated. Users visiting the file will be redirected to the media library wp-admin/upload.php. A user-facing warning will be displayed when the media library is reached via a deprecated link. (#57612)

External Library Updates

The following libraries were updated to the latest versions:

  • PHPMailer is being updated to v6.8.0 (#57873)
  • Requests library is being updated to v2.0.6 (#58079)
  • jQuery is being updated to v3.7.0 (#58083)
  • Sodium Compat is being updated v1.20.0 (#58224)
  • jQuery Migrate is being updated to v3.4.1 (#58451)
  • npm packages is being updated to the latest version (#58623)

Props to @costdev and @mikeschroder for technical review, to @milana_cap for review.

#6-3, #field-guide

WordPress 6.2 Field Guide

This guide shares more of the in-depth changes that you will find in 6.2 and is published with Release Candidaterelease candidate One 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 to help inform WordPress developers, extenders and others.

In TracTrac An open source project by Edgewall Software that serves as a bug tracker and project management tool for WordPress., there are almost 300 tickets: 110 of which are enhancements and feature requests, 166 bug fixes, and 20 other blessed tasks. This time there are 28 tickets with a focus on performance, 15 for accessibility, and 18 for modernizing code and applying coding standards. GutenbergGutenberg The Gutenberg project is the new Editor Interface for WordPress. The editor improves the process and experience of creating new content, making writing rich content much simpler. It uses โ€˜blocksโ€™ to add richness rather than shortcodes, custom HTML etc. https://wordpress.org/gutenberg/โ€™s GitHubGitHub GitHub is a website that offers online implementation of git repositories that can easily be shared, copied and modified by other developers. Public repositories are free to host, private repositories require a paid subscription. GitHub introduced the concept of the โ€˜pull requestโ€™ where code changes done in branches by contributors can be reviewed and discussed before being merged by the repository owner. https://github.com/ repo brings 1645 pull requests: 292 enhancements, 354 bugbug A bug is an error or unexpected result. Performance improvements, code optimization, and are considered enhancements, not defects. After feature freeze, only bugs are dealt with, with regressions (adverse changes from the previous version) being the highest priority. fixes and 30 accessibilityAccessibility Accessibility (commonly shortened to a11y) refers to the design of products, devices, services, or environments for people with disabilities. The concept of accessible design ensures both โ€œdirect accessโ€ (i.e. unassisted) and โ€œindirect accessโ€ meaning compatibility with a personโ€™s assistive technology (for example, computer screen readers). (https://en.wikipedia.org/wiki/Accessibility) improvements.

Changes in 6.2 is spread across 44 coreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. components. Below is the breakdown of the most important ones.

BlockBlock Block is the abstract term used to describe units of markup that, composed together, form the content or layout of a webpage using the WordPress editor. The idea combines concepts of what in the past may have achieved with shortcodes, custom HTML, and embed discovery into a single consistent API and user experience. Editor

WordPress 6.2 is bringing 10 Gutenberg releases into the core โ€“ 14.2, 14.3, 14.4, 14.5, 14.6, 14.7, 14.8, 14.9, 15.0, and 15.1. You will find new APIs, upgrades, useful improvements for Global styles, more block support, a hook renamed, and many other changes in these 10 plugin releases.

Bundled Theme

Twenty Twelve to Twenty Seventeen now includes font files in the theme folder instead of loading fonts from a remote source (Google Fonts). This update ensures that the themes follow current recommendations for fonts from a privacy perspective.

Internationalization

In WordPress 6.2, the I18ni18n Internationalization, or the act of writing and preparing code to be fully translatable into other languages. Also see localization. Often written with a lowercase i so it is not confused with a lowercase L or the numeral 1. Often an acquired skill. component gets a new wrapper function and it will, also, be easier to switch to a userโ€™s localeLocale A locale is a combination of language and regional dialect. Usually locales correspond to countries, as is the case with Portuguese (Portugal) and Portuguese (Brazil). Other examples of locales include Canadian English and U.S. English., to name just a couple of improvements. Find the rest in the dedicated dev notedev note Each important change in WordPress Core is documented in a developers note, (usually called dev note). Good dev notes generally include a description of the change, the decision that led to this change, and a description of how developers are supposed to work with that change. Dev notes are published on Make/Core blog during the beta phase of WordPress release cycle. Publishing dev notes is particularly important when plugin/theme authors and WordPress developers need to be aware of those changes.In general, all dev notes are compiled into a Field Guide at the beginning of the release candidate phase..

Filesystem APIAPI An API or Application Programming Interface is a software intermediary that allows programs to interact with each other and share data in limited, clearly defined ways.

If youโ€™ve been using the copy_dir() function for moving directories, you will be happy to find a new, move_dir(), function that comes with WordPress 6.2.

New function wp_opcache_invalidate_directory()

wp_opcache_invalidate()ย invalidates the OPcache for individual PHPPHP The web scripting language in which WordPress is primarily architected. WordPress requires PHP 7.4 or higher files after overwriting. In #57375ย wp_opcache_invalidate_directory()ย was added to recursively invalidate the OPcache for PHP files after overwriting. The function accepts a single argument,ย (string) $dir, pointing to the directory containing PHP files for which OPcache is to be invalidated.

Changes in WP_Filesystem_Direct::move() function

In #57375ย WP_Filesystem_Direct::move()ย had directory support added to make it consistent withย ::move()ย methods inย WP_Filesystem_FTPext,ย WP_Filesystem_ftpsocketsย andย WP_Filesystem_SSH2.

Database

Posts, Post types

To make sure you get the proper results when searching for a page, or any other post type, by the title, WordPress 6.2 is deprecating the get_page_by_title() function in favour of WP_Query.

Performance

WordPress 6.2 brings some major performance wins to WordPress core, visible in the benchmarks for both Web Vitals and Server Timing metrics. Performance is further improved for block themes performance with ~20% faster TTFB and ~14% faster LCP. On pages with hero images, the LCP improvements are even greater at ~19%.

  • The new filterFilter Filters are one of the two types of Hooks https://codex.wordpress.org/Plugin_API/Hooks. They provide a way for functions to modify data of other functions. They are the counterpart to Actions. Unlike Actions, filters are meant to work in an isolated manner, and should never have side effects such as affecting global variables and output. pre_wp_load_alloptions allows short-circuiting the loading of WordPressโ€™s autoloaded options with custom logic. View ticketticket Created for both bug reports and feature development on the bug tracker. #56045.
  • The results of the get_adjacent_post() function are now being cached. View ticket #41131.
  • Cache keys for WP_Term_Query are now based on SQL without placeholders so that they can actually result in cache hits. View ticket #57298.
  • WP_Query is now no longer priming post caches twice. View ticket #57373.
  • Lazy-loading term metadata from the cache is now faster due to using wp_cache_get_multiple(). View ticket #57150.
  • The results of wp_get_global_settings() are now cached within a single request, resulting in a faster response time of ~8% for WordPress core. View ticket #57502.

Themes

The Themes component brings some new options for theme authors, performance improvements as well as feature removals.

  • The โ€œStyle Variationsโ€ tagtag A directory in Subversion. WordPress uses tags to store a single snapshot of a version (3.6, 3.6.1, etc.), the common convention of tags in version control systems. (Not to be confused with post tags.) is added to the list of WordPress theme features. View ticket #56869.
  • theme.json supports additional link-related pseudo classes, such as :linkย andย :any-link. View ticket #57053.
  • Account for a numeric theme directory inย WP_Theme::__construct() to allow a numeric theme name. View ticket #54645.
  • Improve performance of _add_block_template_part_area_info and _add_block_template_info functions which result in hitting an existing cache and in much fewer calls to get_option. View ticket #57077.
  • Caching is added toย WP_Theme::is_block_theme(). View ticket #57114.

External libraries

Significant and long-time-awaited changes come in the Requests library: namespaces, minimum PHP version, PHP 8.x compatibility, stricter input validation and others.

Other developer updates

More hooksHooks In WordPress theme and development, hooks are functions that can be applied to an action or a Filter in WordPress. Actions are functions performed when a certain event occurs in WordPress. Filters allow you to modify certain functions. Arguments used to hook both filters and actions look the same., new and renamed, and other notable changes can be found in miscellaneous dev note.

But wait, there is more!

Application Passwords

Allow HTTPHTTP HTTP is an acronym for Hyper Text Transfer Protocol. HTTP is the underlying protocol used by the World Wide Web and this protocol defines how messages are formatted and transmitted, and what actions Web servers and browsers should take in response to various commands. URLs for application password responses when using a local environment type. View ticket #52617.

Bootstrap/Load

Check that eitherย mysqli_connect()ย orย mysql_connect()ย is available. This resolves a fatal error and displays an actionable message if theย mysqliย PHP extension is missing. View ticket #51988.

Comments

Allow passingย $comment_IDย parameter toย get_comment_time() and comment_time(). This brings consistency with get_comment_date() and comment_date(). View ticket #52322.

External libraries

The following libraries were updated to the latest versions:

Formatting

By optimizing the low-level functionย wp_kses_bad_protocol()ย for the by far most common scenarios, the performance ofย esc_url() is improved. View ticket #22951.

General

If youโ€™ve been following the progress of improvements to allow for named parameters, massive work has been done on that field in 6.2. View ticket #56788.

Mail

Allow custom attachment filenames inย wp_mail() by passing an associativeย $attachmentsย array, where the key strings will be used as filenames instead. View ticket #28407.

Media

It is now possible to explicitly provide aย decodingย value of e.g. booleanย falseย in theย $attrย parameter of the wp_get_attachment_image() function, to ensure the attribute decoding is omitted. View ticket #57086.

Enhance logic to determine LCP image in block themes and avoid lazy-loading it. Additionally, this changeset uses the benefits of block template parts to avoid lazy-loading images in theย headerย block template part, making the lazy-loading heuristics even more accurate for sites using a block theme. A test with a block theme page with an image shows a notableย ~19% LCP improvement in 6.2. View tickets #56930 and #57490.

REST APIREST API The REST API is an acronym for the RESTful Application Program Interface (API) that uses HTTP requests to GET, PUT, POST and DELETE data. It is how the front end of an application (think โ€œphone appโ€ or โ€œwebsiteโ€) can communicate with the data store (think โ€œdatabaseโ€ or โ€œfile systemโ€) https://developer.wordpress.org/rest-api/

Support non-Latin characters in template route regex. Non-Latin characters are URLURL A specific web address of a website or web page on the Internet, such as a websiteโ€™s URL www.wordpress.org-encoded (e.g.ย %cf%84%ce%b5%cf%83%cf%84). Matchingย %ย in the route ensures templates with non-Latin titles can be properly saved. View ticket #57329.

Users

Add the newย wp_set_passwordย action hook, triggered after a password is set for a given user. As several plugins are callingย wp_set_password()ย directly, adding an action to the end of the function will help pluginPlugin A plugin is a piece of software containing a group of functions that can be added to a WordPress website. They can extend functionality or add new features to your WordPress websites. WordPress plugins are written in the PHP programming language and integrate seamlessly with WordPress. These can be free in the WordPress.org Plugin Directory https://wordpress.org/plugins/ or can be cost-based plugin from a third-party. authors to catch all instances of password setting. View ticket #57436.

Thanks to @flixos90, @poena, @costdev, @bph for collaborating on this field guideField guide The field guide is a type of blogpost published on Make/Core during the release candidate phase of the WordPress release cycle. The field guide generally lists all the dev notes published during the beta cycle. This guide is linked in the about page of the corresponding version of WordPress, in the release post and in the HelpHub version page. and @webcommsat, @audrasjb, @annezazu, @mukesh27, and @sabernhardt for peer review.

#6-2, #field-guide