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.

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

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

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

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/

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 5.6.20 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 Filter Hooks

  • 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 be 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 5.6.20 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 capabilities 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 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 be 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 5.6.20 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_FTPextWP_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

WordPress 6.1 Field Guide

WordPress 6.1 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 is out and it’s time to take a look at what changes we can expect. Release squad and many contributors worked hard on both TracTrac An open source project by Edgewall Software that serves as a bug tracker and project management tool for WordPress. 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 be the repository owner. https://github.com/; with more than 120 enhancements and feature requests, 241 bug fixes, 42 other blessed tasks, which makes it over 400 tickets in Trac; and 50 Trac pull requests bringing 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/ changes into coreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress.. In Gutenberg repo there were 1684 pull requests of which 425 new features and enhancements and 428 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, while the rest is tooling, testings, documentation, and code quality.

New release comes with massive performance improvements, 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) enhancements, first default 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. based themes marked as accessibility ready, 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 functions, private functions being open for public use and many more.

Performance

With 45 Trac tickets for 6.1, 19 components got various performance improvements. The most significant improvements arrived in WP_Query and 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/., which will impact a large portion of your next page load.

If there is one thing you take from performance updates, let it be caching queries in WP_Query. It’s been a long dream for many developers and, once you test it, it will be all that you hoped for. REST API is richer for several priming caches and lighter for prepare_links (if you want it). Site Health will check your Persistent Object Cache and Page Cache, while several private 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. functions are now public. You’ll also be able to flush cache by group, declare supported cache features, validate cache keys and more.

Besides Query, REST API, Site Health, and Cache API, performance improvements can be found in 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, Bootstrap, Media, Post (Post Types), Editor, Database and many other components. There are too many changes to mention them all here, but you are invited to read 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. on performance improvements in WordPress 6.1.

Other performance improvements:

  • Posts, Post Types – Post title should not be translatable in get_user_data_from_wp_global_styles method. #55392
  • Quick/Bulk Edit – Check the show_in_quick_edit 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. property when processing the data for bulk edited posts. #42474
  • 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. – Use latest_id as the array key for the latest revision ID. #55857

Accessibility

Similar to performance, accessibility improvements arrive in 28 Trac tickets, spread over 13 components. We have first block-based bundled themes marked with accessibility ready 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.), Twenty Twenty-Three and Twenty Twenty-Two. Forms, site/template and block editors, administration screens and many more accessibility improvements are coming in with 6.1 release.

Block Editor

WordPress 6.1 is bringing 10 Gutenberg releases into core – 13.1, 13.2, 13.3, 13.4, 13.5, 13.6, 13.7, 13.8, 13.9, 14.0, and 14.1.

Among many changes in these 10 releases of the 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, a lot of effort was made in making blocks and other Gutenberg features more available in classic themes, which will ensure easier transition to hybrid and block-based themes.

New ways to extend various parts of block editor tools which were very much needed in everyday development, such as scaffolding block variants with create-block tool, content locking updates, filtering theme.json data, extending Query block, Style Engine, new ReactReact React is a JavaScript library that makes it easy to reason about, construct, and maintain stateless and stateful user interfaces. https://reactjs.org/. hooks for easier data access, and many more.

Themes

Themes are getting more control over styling elements, layout, and navigation while classic themes also get control over block-based template parts and theme.json. Read all about these in dev notesdev 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. below.

Updated Settings and Styles in Theme.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.

New server-side filters in WordPress 6.1 will allow hooking into theme.json data (see 56467 and 54251 for more info).

REST API

REST API gets nice improvements for /search endpoint as well as pretty-printing JSON responses, which can be added as query parameter but also controlled via rest_json_encode_options 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..

Administration

Login and Registration

Media

In 5.8 we welcomed support for WebP image format and excitement was high when generating WebP format was merged into core (54097, 54094, and 54086) for 6.1. However, this commit has been reverted in 54226 with recommendation of integrating the feature into the Canonical plugin.

Changes in #54788 allow for the muted property to be used in video elements, which solves for content that wishes to autoPlay when a page is viewed.

Database

A file containing the wpdb class is renamed from wp-includes/wp-db.php to wp-includes/class-wpdb.php to conform to the coding standards. If you’ve been including this file directly, do not worry – a new wp-db.php file is created and it’s loading the old, now renamed file. Read more in #56268.

MariaDB 10.2 has reached EOL (end of life). The minimum version of MariaDB supported is now 10.3 (see #55791).

Other developer updates

As mentioned above, WordPress 6.1 comes with a serious number of new hooks and functions, which will make Miscellaneous 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. very useful for theme and plugin developers.

But wait, there is more!

Application Passwords

Allow a Super Adminadmin (and super admin) to set an application password on a site they’re not a member of. #53224

Autosave

Block autosaving from overwriting changes when locked from editing. #55659

Cache API

Prevent excessive notoptions key lookups. #56639

Charset

Normalize to Unicode NFC encoding before converting accent characters in remove_accents()#35951

Cron API

  • Modify _get_cron_array() to always return an array. #53940

Editor

  • Universalize functions for checking block editor status. #51819
  • Clarify that get_page_template() doesn’t work on block themes. #56394
  • Block Patterns: Add new Footers categoryCategory The 'category' taxonomy lets you group posts / content together that share a common bond. Categories are pre-defined and broad ranging. #56416
  • Spacer block: color control (only text color) #43660 (background in next version)

Embeds

  • Support for Google Data Studio #55771
  • Pocket Casts as an oEmbed provider #55860
  • Tumblr reader URLs #56733

External Libraries

Several external libraries have been updated to their latest versions. These include PHPMailer, GetID3, Moment, Sodium Compat, jQuery, jQuery UIUI User interface, MediaElement.js, Clipboard.js, and Underscore

  • Add support for WebP images in the Thickbox library. #55786
  • Update PHPMailer to 6.6.4 #55976, #56016, #56413
  • Update the Underscore library for 6.1 #56030
  • Update Moment library for 6.1 #56031
  • Update jQuery UI library for 6.1 #56239
  • Update mediaelement.js to version 4.2.17 #56319
  • Update jQuery to version 3.6.1 #56451
  • Update Sodium Compat to 1.19.0 #56564, #56653
  • Update GetID3 to version 1.9.22 #56692

Formatting

  • Normalize to Unicode NFC encoding before converting accent characters in remove_accents() #24661
  • Replace all esc_url_raw() calls in core with sanitize_url(). #55852
  • Allow min()max()minmax(), and clamp() values to be used in inline CSSCSS Cascading Style Sheets.. #55966
  • KSES: Allow more layout-related CSS properties. #56122
  • KSES: Allow assigning values to CSS variables. #56353

General 

  • Formatting: Add support for Enums in is_serialized(). #53299
  • Replace phpversion() function calls with PHP_VERSION constant. #55680
  • Blocks: Remove duplicate use of realpath() in register_block_style_handle(). #56636
  • Block Editor: Remove repetitive calls to file_get_contents() in block editor settings. #56637
  • General: Remove file_exists() checks after calling realpath(). #56654
  • Blocks: Remove extra get_theme_file_path() calls in register_block_style_handle(). #56666
  • General: Ensure wp_rand() returns 0 when $min and $max values are equal to 0. #55194

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.

I18N: Introduce WP_Textdomain_Registry to store text domains and their language directory paths. #39210 

Login and Registration

  • Required fields in networknetwork (versus site, blog) registration. #54344
  • Explicitly associate errors with input fields. #54483

Media

Respect EXIF Rotations. #54937

Networks and Sites

  • Move global_terms_enabled() to its proper final resting place. #21734 
  • Use metadata API in *_network_options` functions. #37181
  • Store main site ID of a network in network options. #55802

Posts, Post Types

Correct the check for non-existing post in get_post_permalink(). #45329

Script Loader

  • Ensure block script is enqueued, regardless of render_callback. #56470
  • Added support for preload links (similar to resource hints) #42438

Taxonomy

  • Standardise the format used to describe arguments passed to actions and filters inside wp_insert_term() and wp_update_term(). #55441
  • Set use_desc_for_title to false by default in wp_list_categories() #55530
  • Associate field descriptions with fields. #55651

Upgrade/Install

Track php extensions and image library support for WebP and AVIF. #48116

Widgets

Store default options for uninitialized widgets. #54677

Thanks to @sabernhardt, @bph, @jeffpaul, @desrosj, @webcommsat, @spacedmonkey, @sergeybiryukov and @audrasjb for peer review.

#6-1, #field-guide

Performance Field Guide for WordPress 6.1

WordPress 6.1 introduces a number of important performance improvements which will have impact in all aspects. The most significant improvements are done in caching WP_Query as well as 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/..

Improvements to WP_Query

Database queries in WP_Query being cached is a long wanted feature for many developers and finally a dream come true in WordPress 6.1. A couple of new functions will ensure that users cache and linked objects for menu items are now primed while get_page_by_title function will from now on use WP_Query and take the full advantage of all these improvements.

TracTrac An open source project by Edgewall Software that serves as a bug tracker and project management tool for WordPress. tickets holding these changes: #22176, #55716, #55620, #36905.

Improvements to REST API

Priming caches in a single query will significantly improve Posts controller with several new helper functions but that’s not all. User and comments controller will benefit in a similar way while 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 post type controllers are now going to prepare_links only when needed. This control over prepare_links method will be available for custom controllers as well.

Trac tickets holding these changes: #52992, #56019, #56020, #55592, #55593, #55620, #55674, #56272.

Site Health improvements

WordPress 6.1 will have two new Site Health checks – Persistent Object Cache and Page Cache, along with a number of new filters. Find out more in 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..

Trac tickets holding these changes: #56040, #56041.

Improvements to 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

In WordPress 6.1 the networknetwork (versus site, blog) options functions have been updated to be consistent with other metadata types, support for register_meta is added, prime caching network options in a single query, string main site ID in network options and more.

Trac tickets holding these changes: #37181, #55802.

Bootstrap/Load

The order of 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. is slightly changed in order to gain more control over caching behavior, preloading assets and conditionally executing redirects.

Trac ticketticket Created for both bug reports and feature development on the bug tracker. holding these changes: #56068.

Improvements to 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.

Cache API improvements bring validating cache keys in WP_Object_Cache methods, deleting cache by group and making a number of private cache priming functions public, and thus, available for usage in plugins and themes.

A valid cache key must be either an integer number or a non-empty string. This will prevent silent failing in wp_cache_*() functions, done by a quick type check and adding a _doing_it_wrong() message if the string is empty, false, or null. Also, a check in update_user_caches() and clean_user_cache() will make sure that the email is not empty before being cached or removed from cache. Read more in #56198.

Several private cache priming functions for various object types are now public 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 and theme authors are encouraged to use these functions to improve the performance of their code by reducing the number of database queries. These functions are:

  • _prime_post_caches()
  • _prime_term_caches()
  • _prime_comment_caches()
  • _prime_network_caches()
  • _prime_site_caches()
  • _get_non_cached_ids()

Read more in #56386.

Introducing wp_cache_flush_group() function

If you wanted to delete cached item with wp_cache_delete you had to specify the item’s ID, or you had to flush the entire cache with wp_cache_flush. WordPress 6.1 introduces a new plugable function called wp_cache_flush_group which removes all cache items in a group, if the object cache implementation supports it.

Introducing wp_cache_supports() function

Developers can now detect if their current implementation of an object cache supports flushing by group, by calling wp_cache_supports( $feature ) which returns true if the feature is supported. Third-party object cache plugins can declare a wp_cache_supports() function and correctly list their supported features:

  • add_multiple
  • set_multiple
  • get_multiple
  • delete_multiple
  • flush_runtime
  • flush_group

Note: The wp_cache_supports() function replaces and supersedes the wp_cache_supports_group_flush() function added in #4476.

Read more in #56605.

Media improvements

WordPress 6.1 will add decoding="async" to image attributes, along with new wp_img_tag_add_decoding_attr() function and wp_img_tag_add_decoding_attr 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.. Read more in #53232.

Query-attachments AJAX endpoint now caches the parent post objects. Read more in #56037.

WP_Media_List_Table class will call update_post_parent_caches function in order to prime parent caches in a single database request. Read more in #56036.

Added caching to wp_count_attachments() for better consistency with wp_count_posts(). Read more in #55227.

Avoid duplicated query when retrieving empty posts collections. Read more in #55677.

Post, Post Types improvements

In WordPress 6.1 WP_Posts_List_Table class will call update_post_author_caches function in order to prime post author caches in a single database request. Read more in #56100.

A new filter post_class_taxonomies will allow developers to reduce the number of taxonomies for which classes term classes are generated. Read more in #37114.

Sites running persistent object caching will have result of database queries in _find_post_by_old_slug and _find_post_by_old_date functions, cached. Read more in #36723.

Editor

Additional build task copy:block-json will convert and store all block.json files in a single blocks-json.php which will prevent all of this from happening for every 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. on each page load.

Trac ticket holding these changes: #55005.

Database

Identifiers (such as Table and Field names) are escaped with the %i placeholder which will prevent SQL Injection Vulnerabilities and provide a small performance improvement.

Trac ticket holding these changes: #52506.

Other performance improvements

Administration

Performance of WP_List_Table::get_column_info() is improved by adding the primary column to the cached 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. values (#34564).

Cron API

In 6.1 wp-cron will be non-blocking for LiteSpeed LSAPI (#54668).

Taxonomy

Retain default term option when unregistering taxonomies and adjustments to handling default terms for custom taxonomies (#54472).

Themes

Two new actions are wrapping the process of loading a template file (load_template) – wp_before_load_template and wp_after_load_template (#54541).

Script loader

New filter wp_preload_resources enables resource preloading with rel='preload' (#42438).

Users

Prime user 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. in WP_User_Query (#55594).

Thanks to @spacedmonkey, @tweetythierry, and @tillkruess for peer review.

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

WordPress 6.0 Field Guide


Update on 5 May 2022: Updates to the @wordpress/create-block templating system and Block Locking Settings in WordPress 6.0 dev notesdev 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. were added to 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 section.


With 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). 1 officially shipped, it’s time to explore the next major releasemajor release A release, identified by the first two numbers (3.6), which is the focus of a full release cycle and feature development. WordPress uses decimaling count for major release versions, so 2.8, 2.9, 3.0, and 3.1 are sequential and comparable in scope., WordPress 6.0. This release introduces Style variations, the Block Locking UIUI User interface, various writing improvements, more design tools, 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., updated external libraries, and more! At a high level, there are 97 enhancements and feature requests131 bug fixes and 13 Gutenberg bug fixes23 other blessed tasks, which brings us to 251 Trac tickets in total.

The new performance team has been working hard to improve various parts of WordPress. A lot of queries have been optimized and some removed, cache improved, multiple translations of the same strings removed, just to mention a few.

Let’s take a deeper look at what to expect in 6.0.

Note: some of the changes will require 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-partyPlugin A plugin is a piece of software containing a group of functions that can be added to a WordPress website. They can extend functionality or add new features to your WordPress websites. WordPress plugins are written in the PHP programming language and integrate seamlessly with WordPress. These can be free in the WordPress.org Plugin Directory https://wordpress.org/plugins/ or can be cost-based plugin from a third-party and theme authors to adapt or change their code. Please, read these Dev notesdev 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. Each important change in WordPress CoreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. 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 blogblog (versus network, site) during the 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. 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 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. at the beginning of the release candidate phase. carefully to make sure your code is ready for WordPress 6.0 on May 24, 2022.

Accessibility

Along with performance, lots of work has focused on improving accessibility in various parts of the WordPress software.

Block Editor

The Block Editor updates bring new functionality, fixes, and more:

  • The ability to bundle multiple Style variations for block themes.
  • The option to create page content patterns that users can choose from to create their pages.
  • New ancestor property in block.json letting one restrict where users can place their blocks.
  • A new block locking UI with a lock attribute for every block.
  • Registration of blocks from within themes.
  • Improved support for preserving unrecognized content in the editor.
  • More robust block theme export feature in the Site Editor.
  • Block markup updates for image, quote, list, and group blocks.
  • New set of Post Comments blocks, No Results block, and more.
  • & more!

Of note, if you currently have the Gutenberg plugin active on your website and are upgrading to WordPress 6.0, please make sure Gutenberg is updated to its latest version. This helps ensure the best experience possible.

Let’s dig in.

Bootstrap/Load

Amongst other performance improvements, in this release you’ll be able to skip not needed queries with do_parse_request filter.

Cache API

In WordPress 6.0 wp_cache_*_multiple API becomes a full CRUD. Also, option to flush the runtime cache without flushing the entire persistent cache is being enabled.

Media

Media has new filters and a few UI additions:

  • Enable edits to custom image sizes. Adds a filter edit_custom_thumbnail_sizes to allow users to enable editing individual custom image sizes. (#28277)
  •  Add a “Copy URL to clipboard” function to the list table view. (#54426)

We’ll find performance improvements in Media component as well.

Posts, Post types/Taxonomies

WordPress 6.0 introduces more dynamic hooks for custom post types and taxonomies.

Taxonomy

Taxonomies received a lot of performance improvements, from term query caching and adding limits to taxonomy queries, through navigation menu items to changing term_exists to use get_terms().

Themes

This new release offers a streamlined way for theme authors to work with patterns, support for multiple theme.json files AKA style variations, better export themes with Site Editor, and a few more goodies.

Allow block themes to be activated without index.php

This change removes the requirement for block themes to have an unused index.php template just for activation, as they use a templates/index.html file instead. (#54272)

Correct the logic for displaying a _doing_it_wrong() notice for add_theme_support( ‘html5’ )

  • Calling add_theme_support( 'html5' ) without passing an array of supported types should throw a _doing_it_wrong() notice: “You need to pass an array of types”.
  • If the second parameter is not specified, it should fall back to an array of comment-listcomment-form, and search-form for backward compatibility.
  • If the second parameter is not an array, the function should return false.

For more info see #51657.

Users

With 6.0 WordPress installs with more than 10,000 users, so called “large sites”, will receive performance improvements for querying and counting users.

Other Developer Updates

WordPress 6.0 also brings:

  • Option for plugin authors to edit plugin description on the Plugins > Add New and/or Network Admin > Plugins > Add New screens.
  • Ability to filter whole notification email in retrieve_password.
  • Possibility to remove site icons in multisite networks.

But Wait, There is More!

More than 131 bugs, 97 enhancements and feature requests, and 23 blessed tasks have been marked as fixed in WordPress 6.0.

Here are a few that haven’t been highlighted:

  • Administration: Add a media_date_column_time filter to the media list table date column. Similar to the existing post_date_column_time filter in the posts list table, this change adds a new hook to filter the “Date” column output in the media list view. (#42942)
  • Build: Update webpack to v5.x. This aligns closer with how the Gutenberg plugin handles WordPress packages. Enable React Fast Refresh support to WordPress core for block development with @wordpress/scripts. Bring caniuse-lite to the latest version which ensures that build tools target the most recent version of browsers supported by WordPress. (#51750, see #55505)
  • Build/Test Tools:
    • A .git-blame-ignore-revs file has been added to the repository with a curated list of “pinking shear” commits (ones only applying stylistic changes), making the blame feature on GitHub much more useful (#55422)
    • Webpack and all related build processes/scripts have been updated to version 5 (#51750).
    • The npm install command has been fixed for contributors using an Apple M series silicone by updating the grunt-contrib-qunit dev dependency (#52690).
  • Bundled Theme: If you’ve been having problems with order of elements in comment form in Twenty Nineteen theme, there’s a good news for you in #46600. It’s fixed!
  • Canonical: Function redirect_guess_404_permalink() includes all public statuses, rather than just publish, in 404 redirects in its search. (#47911)
  • Comments: Speeding up Dashboard and Comment moderation SQL load – (#19901)
  • Emoji: Update the Twemoji to version 14.0.2. This version introduces support for the latest Emoji added in Emoji 14. (#55395)
  • External Libraries:
  • Formatting:
    • Add support for formatting sizes as PB, EB, ZB, and YB. (#40875)
    • KSES: Add support for <ruby> and related elements. This is especially commonly used in Japanese content, but it can also been seen in content of other languages like Chinese. The set of elements to enable such functionality consists of <ruby><rt>, and <rp> in the HTML Standard, while some browsers (like Firefox) additionally support <rb> and <rtc> for more advanced formatting. (#54698)
    • KSES: Allow langxml:langdir attributes globally. Globally permit the langxml:lang, and dir attributes on all elements rather than a subset in accordance with the HTML specification. (#54699)
    • Function get_the_author_link() is going to be pluggable in WordPress 6.0. A new filter, get_the_author_link, is added for altering author link output. (#51859)
  • I18n:
    • List item separator should be a WP_Locale property (#39733)
    • Allow languages path in register_block_type (#54797)
  • Media:
    • Remove attachment_fields_to_save filter and deprecate image_attachment_fields_to_save(). This filter prevented removing attachment titles. This changeset removes the filter and deprecates the related function since it is no longer used. (#39108)
    • Enable edits to custom image sizes. With a new filter edit_custom_thumbnail_sizes users will be able to apply media edits to individual custom image sizes. (#28277)
  • Network/Sites: Improve cache key generation in WP_Site_Query (#55462)
  • Plugins:
    • Introduce the plugin_install_description filter. This allows for modification of the plugin card description on the Add Plugins screen. (#55480)
    • Convert apply_filters() into a proper variadic function. (#53218)
  • Posts, Post Types: Pass the $update parameter to wp_insert_post_data and wp_insert_attachment_data filters. This makes it easier to determine in a callback function whether this is an existing post being updated or not. (#46228)
  • Posts, Post Types; Taxonomy: Translate default labels once. Improve the translation of post type and taxonomy labels by caching the translations during runtime. (#26746)

Please, test your code. You can use the Beta Tester plugin on a test site to validate how your plugin or theme functions with WordPress 6.0 RC1.  Fixing issues that your code has with WordPress core helps you and millions of WordPress sites.

Props to @desrosj, @imath, @spacedmonkey, @swissspidy, @annezazu, @webcommsat, @jeffpaul, @costdev, @bph for contributing to this guide.

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