WordPress 6.5 Field Guide

This guide outlines major developer features and breaking changes in 6.5 and is published in the Release Candidaterelease candidate One of the final stages in the version release cycle, this version signals the potential to be a final release to the public. Also see alpha (beta). cycle to help inform WordPress extending developers, CoreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. developers, and others.

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

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

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


Table of contents


Principal Changes

Minimum System Requirement

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

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

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

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

New Features

Block Editor

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

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

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

The Block Bindings API gives you the ability to link Core Block attributes to the values of Custom Fields without needing to create custom Blocks. You can extend this capability further to connect Blocks to any dynamic content.

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

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

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

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

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

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

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

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

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

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

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

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

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

Media

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

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

Script Loader

The Script Modules API brings native JavaScriptJavaScript JavaScript or JS is an object-oriented computer programming language commonly used to create interactive effects within web browsers. WordPress makes extensive use of JS for a better user experience. While PHP is executed on the server, JS executes within a user’s browser. https://www.javascript.com/. Module support to 6.5 and provides two modules for use with the WordPress Interactivity API.

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

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

Upgrade/Install

The Plugin Dependencies feature plugin has been merged into Core.

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

Key Info

A pluginPlugin A plugin is a piece of software containing a group of functions that can be added to a WordPress website. They can extend functionality or add new features to your WordPress websites. WordPress plugins are written in the PHP programming language and integrate seamlessly with WordPress. These can be free in the WordPress.org Plugin Directory https://wordpress.org/plugins/ or can be cost-based plugin from a third-party’s dependencies can be declared by using a new Requires Plugins headerHeader The header of your site is typically the first thing people will experience. The masthead or header art located across the top of your page is part of the look and feel of your website. It can influence a visitor’s opinion about your content and you/ your organization’s brand. It may also look different on different screen sizes. in the dependent plugin’s main file. The header must contain a comma-separated list of WordPress.orgWordPress.org The community site where WordPress code is created and shared by the users. This is where you can download the source code for WordPress core, plugins and themes as well as the central location for community conversations and organization. https://wordpress.org/-formatted slugs.

Example:

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

Dependency slug conditions:

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

Declaring a plugin dependency places the following requirements:

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

The following features are not currently supported:

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

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

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

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

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

Props to @cosdev for review.

Additional Changes

External Libraries

The following libraries were updated to the latest versions:

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

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

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

Miscellaneous Developer Changes

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

Other Updates

Themes

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

Media

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

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

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

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

Site Health

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

Upgrade/Install

During bulk upgrades, a theme upgrade is now checked for satisfying the minimum WordPress version or the server PHPPHP The web scripting language in which WordPress is primarily architected. WordPress requires PHP 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 Action Hooks

  • after_plugin_row_meta (#22316)

New Filter Hooks

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

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

#6-5, #field-guide