WordPress 6.5 Release Day Process

UPDATE: Following Font Library-related discussion the release party has been rescheduled to April 2nd, 2024.

Preparation for the WordPress 6.5 release is underway.

This post shares the release process, including the timeline and how you can help.

Release Timeline Overview


Dry Run

The Dry Run is a key event as a final walk-through for the final release. As noted above, this is scheduled on April 1, 2024 in the #core Slack channel.

What happens usually during the dry run?

  • Bug reports are reviewed to determine if any are critical to warrant another RCrelease 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). (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).).
  • Checks and any necessary updates are made in the src/wp-adminadmin (and super admin)/includes/update-core.php file.
  • Pre-release scripts are run to ensure test suites, coding standards, and other automated checks pass.

If the results are acceptable, the release will go into a 24-hour code freeze period.

24-Hour Code Freeze 

After the dry run and before the release party starts, a mandatory 24-hour code freeze goes into effect.

What does this mean? No source code for 6.5.0 (i.e., in the 6.5 branchbranch A directory in Subversion. WordPress uses branches to store the latest development code for each major release (3.9, 4.0, etc.). Branches are then updated with code for any minor releases of that branch. Sometimes, a major version of WordPress and its minor versions are collectively referred to as a "branch", such as "the 4.0 branch".) can be changed during these 24 hours.

What happens if a critical 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. is reported during this period? The release squad will meet with committers and maintainers to determine if the issue is a blockerblocker A bug which is so severe that it blocks a release..

  • If yes, another RC release happens, and the release process restarts (meaning the dry run is repeated, and then the 24-hour code freeze clock restarts).
  • If not, then the bug is targeted for 6.5.1.

The Release Party 📅

The WordPress 6.5 Release Party will start on Tuesday, April 2, 2024 at 18:00 UTC in the  #core Slack channel.

The release party walks through the steps in the Major Version Release process for anyone who wants to follow along.

Please note releasing a major version requires more time than releasing a 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. or release candidate. There are more steps in the process. If any last-minute issues need addressing, more time will be needed.

How You Can Help

A key part of the release process is checking that the ZIP packages work on all the available server configurations. If you have some of the less commonly used servers available for testing (IIS, in particular), that would be super helpful. Servers running older versions of PHPPHP The web scripting language in which WordPress is primarily architected. WordPress requires PHP 5.6.20 or higher and 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/. will also need testing.

You can start this early by running the WordPress 6.5 RC4 packages, which are built using the same method as the final packages.

During the release party, options will be provided on how to help test the release package.

Tips on What to Test

In particular, testing the following types of installs and updates would be much appreciated:

  • Does a new WordPress install work correctly? This includes running through the manual install process, as well as 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/ or one-click installers.
  • Test upgrading from 4.0.38, 4.9.22, 5.8.6, 5.9.5, 6.0.3, 6.2.2, 6.3.0, 6.4.0, 6.4.1, 6.4.2 and 6.5 RC3, as well as any other versions possible.
  • Remove the wp-config.php file and test a fresh install.
  • Test single site and 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/networknetwork (versus site, blog) (both subdirectory and subdomain) installations.
  • Does it upgrade correctly? Are the files listed in $_old_files removed when you upgrade?
  • Does multisite upgrade properly?

Testing the following user flows on both desktop and mobile would be great to validate each function as expected:

  • Publish a post, including a variety of different blocks.
  • Comment on the post.
  • Install a new 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/theme, or upgrade an existing one.
  • Change the site language.
  • If you’re a plugin developer, or if there are complex plugins you depend upon, test that they’re working correctly.

For a more in-depth list of what features to test, make sure to check the Help Test WordPress 6.5 post.


Thanks to @davidbaumwald, @priethor for the peer review.

#6-5, #core, #release-process

Font Library update: storage of font files

This post has been superseded by the post WordPress 6.5 release delayed 1 week, in which it’s announced fonts will be uploaded to the fonts sub-directory of the uploads folder.

The Font Library, a new feature of WordPress 6.5, will allow users of 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 themes to upload and customize their site’s fonts. You can learn about the full set of Font Library features in the #dev-note.

As fonts are a new first-class object, there has been some discussion around where to store the associated files while accounting for different file systems used by WordPress sites. The particular challenge has been for file systems that do not allow for the writing of files outside the uploads directory (See Gutenberg#59417 and Gutenberg#59699).

To account for such file systems, it was originally decided to natively fallback to the uploads directory natively in WordPress CoreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress..

Revised approach to font file storage

Exploratory work on supporting a fallback directory natively has demonstrated that this approach would lead to a high risk of bugs. Therefore, the original decision is being modified and the new approach will be:

  • WordPress Core will by default only attempt to store font files in the wp-content/fonts directory,
  • For file systems unable to write to or persistently store files in the new directory it is recommended to install 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 Fonts to Uploads to store the files in the under existing uploads directory, in wp-content/uploads/fonts
  • Developers wishing to modify the directory without using a plugin can use the font_dir 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. documented in the announcement post.

Props @mmaattiiaass and other contributors for working on the exploratory pull request.

Thank you @desrosj, @priethor, @chanthaboune and @jorbin for contributing to and reviewing this post.

#6-5, #dev-notes, #dev-notes-6-5

Summary, Dev Chat, March 20, 2024

Start of the meeting in SlackSlack Slack is a Collaborative Group Chat Platform https://slack.com/. The WordPress community has its own Slack Channel at https://make.wordpress.org/chat/., facilitated by @joemcgill.

Announcements

WordPress 6.5 RC 3 was released on March 19, 2024, and Gutenberg 17.9 was released on March 13. Please continue to help test and provide feedback.

Forthcoming Releases

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.: 6.5

We are in the final week before WordPress 6.5 is scheduled to be released, with a Dry Run scheduled for next Monday, March 25, and the release scheduled for Tuesday, March 26.

@swissspidy and @sergeybiryukov will both be around to help during the Dry Run.

Please continue to test the 6.5 release. See this list of key features to test, which was published alongside WP 6.5 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. 3.

Next 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/ release: 18.0

Gutenberg 18.0 is scheduled for release on March 27 and will include these issues.

Discussion

Given that this was the last dev chat before the 6.5 release, we concentrated on discussing any final decisions, blockers, etc.

@swissspidy suggested starting with the Font Library:

From what we’ve seen so far, it seems that adding such a fallback logic appears to be more complex than originally anticipated and that it’s not feasible to land this in time for 6.5. Adding a silent fourth RCrelease 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). solely for that would be too risky.
So for 6.5 we might want to consider:
1. Leave the current situation as-is (fonts go to `wp-content/fonts`, no fallback)
2. Point people to plugins such as Fonts to Uploads and the dev-note explaining how to change the upload location.
3. Re-evaluate fallback logic for 6.5.1 or 6.6 if needed, also considering potential folders in the future (patterns, templates, AI models, etc.)

We discussed how the fallback logic is proving to be more complicated than expected and will present a future maintenance burden and potential for bugs that aren’t worth the risk of rushing to land a fix. We mentioned alternative options, including delaying the release and removing the Font Library.

The suggestion from release leads and people familiar with the latest state of the Font Library was that it is in a good enough shape to include, and that the difficulty is in the implementation of the potential automatic fallback and not in implementing the feature itself. Therefore, the plan following the conversation was that the feature will be shipped without the fallback logic in place.

Based on this, the following actions should be taken:

  1. A post on make/coreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. to communicate the decision — @peterwilsoncc offered to start on a draft
  2. Update the docs with a pointer to 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@flexseth offered to help update docs (@mikachan also happy to help here)
  3. Update https://wordpress.org/plugins/fonts-to-uploads/ to a Canonical plugin with maintenance by WP Contributors/WP.org with source moved under the WP org on 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/ so that it’s a shared responsibility
  4. Once the post outlining the decision to change to the the fallback directory behavior is posted, we should inform #forums, along with a request from them to be on the lookout for issues with the lack of a default Font Library fallback — @jorbin offered to help with this

Also related to the Font Library, @grantmkin noted that there is a wordpress-importer PR that needs review if someone has expertise and availability.

Highlighted posts

The full list of posts from the last week in Core can be read on the agenda at this link.

Open floor

There were two issues raised on the agenda:

  1. Would the fix for plugin zip file uploads be included in 6.5?
    • Yes, the fix is merged into 6.5
  2. Will we have an extra RC, since there are some unresolved Font Library tasks?
    • There is currently no extra RC release planned

When discussing whether we needed another RC, the suggestion was to release an RC for any necessary Font Library changes (or any additional needed code changes) later this week, while the $_old_files change and theme bumps are handled during the Dry Run without publishing an extra RC.

@joemcgill closed the chat by suggesting that if the purpose of an RC is to allow time for more testing, to not make it silent, and encourage the release leads to finalize a plan. Coordination about an extra RC continued following the meeting in the release leads channel.

Props to @joemcgill for reviewing.

#6-5, #dev-chat, #summary

Agenda, Dev Chat, Wednesday March 20, 2024

The next WordPress Developers Chat will take place on  Wednesday March 20, 2024 at 20:00 UTC in the core channel on Make WordPress Slack.

The live meeting will focus on the discussion for updates on 6.5, and have an open floor section.

Additional items will be referred to in the various curated agenda sections, as below. If you have ticketticket Created for both bug reports and feature development on the bug tracker. requests for help, please do continue to post details in the comments section at the end of this agenda.

Announcements

WordPress 6.5 RC 3 was released on March 19, 2024. Thanks to everyone involved and those who helped test.

Forthcoming releases

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.: 6.5

Updates from the release squad can be shared in the Dev Chat.

Please continue to test the 6.5 release. See this list of key features to test, which was published alongside WP 6.5 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. 3.

Next 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/ release: 18.0

Gutenberg 18.0 is scheduled for release on March 27 and will include these issues.

Discussions

This week the discussion will focus on any priority topics that need to be raised before the launch of WordPress 6.5.

Proposed topics

  • Are there any priority topics needed for discussion ahead of the WordPress 6.5 release?
    • Is there a need for a silent RCrelease 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).?

Feel free to suggest additional topics related to this release in the comments.

Highlighted posts

CoreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. Editor Updates

Tickets for assistance

Tickets for 6.5 will be prioritized.
Please include detail of tickets / PR and the links into comments, and if you intend to be available during the meeting if there are any questions or will be async.

Open floor

Items for this can be shared in the comments.

Props to @joemcgill for reviewing.

#agenda, #dev-chat

Hallway Hangout: Using Site editor in production for client sites

The topic is on how do agencies and freelancers adjust their workflow and tooling to provide a consistent experience for their clients. The difference between classic themes and 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. themes are considerable. For instance, block themes have settings information stored in various places (database and 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.), and templates and patterns are handled differently. How does it all change workflows regarding version controlversion control A version control system keeps track of the source code and revisions to the source code. WordPress uses Subversion (SVN) for version control, with Git mirrors for most repositories. and deployment. Is there a common method that could be identified and help other agencies and freelancers in their work with block themes?

In this informal discussion could touch on

  • Common issues agencies encounter
  • How people use the Create Block Theme 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,
  • How to manage theme.json,
  • Tools and automation helpers.
  • and a lot more

Everyone is welcome at this Hallway Hangout, but it covers topics that are geared towards developers in agencies and freelancers working with client projects.

Join us on Wednesday, March 27, 2024, at 16:00 UTC. The Zoom link will be shared on the day in the #outreach channel.

Props to @greenshady and @belbo for review.

Performance Chat Summary: 19 March 2024

Meeting agenda here and the full chat log is available beginning here on Slack.

Announcements

  • Welcome to our new members of #core-performance
  • WordPress 6.5 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). 3 is today (Mar 19)
  • Reminder on timezone difference for the next week, this chat will remain at 16:00 UTC and then shift to 15:00 UTC from April 2, 2024

Priority Items

Structure:

  • WordPress performance TracTrac An open source project by Edgewall Software that serves as a bug tracker and project management tool for WordPress. tickets
    • Current release
    • Future release
  • Performance Lab 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 other performance plugins)
  • Active priority projects
    • INP research opportunities
    • Improve template loading
    • Plugin checker

WordPress Performance Trac Tickets

Performance Lab Plugin (and other Performance Plugins)

Active Priority Projects

Plugin Checker

  • No updates this week, will be removed from agenda moving forwards unless there are proactive updates on release 1.1

Improve template loading

  • @thekt12 I should be able to raise a PR for review today, for #59600 including template part caching

INP research opportunities

  • @adamsilverstein I have continued working on INP research in a colab nostly by querying httparchive data. Recently I added a few new queries that gather:
    • Plugins on WordPress sites with not good INP (based on Wapalyzer detection)
    • Long task scripts on WordPress sites with not good INP (using the long task audit)
    • Long task scripts on WordPress sites overall
  • I then focused in on scripts by path and ran some group queries that only look at the path. Removing the host part ensures we catch common scripts that run across many WordPress sites. Finally, I am grouping by host to see if any 3p stand out at a top level. I’m collecting all the resulting data in a sheet and will soon be ready to summarize the findings in a doc and share everything!

Open Floor

Our next chat will be held on Tuesday, March 26, 2024 at 16:00 UTC in the #core-performance channel in Slack.

#core-performance, #performance, #performance-chat, #summary

Performance Chat Agenda: 19 March 2024

Here is the agenda for this week’s performance team meeting scheduled for Mar 19, 2024 at 16:00 UTC.

  • Announcements
    • Welcome to our new members of #core-performance
    • WordPress 6.5 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). 3 is today (Mar 19)
    • Reminder on timezone difference for the next week, this chat will remain at 16:00 UTC and then shift to 15:00 UTC from April 2, 2024
  • Priority items
    • WordPress performance TracTrac An open source project by Edgewall Software that serves as a bug tracker and project management tool for WordPress. tickets
      • Current release
      • Future release
    • Performance Lab 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 other performance plugins)
    • Active priority projects
      • INP research opportunities
      • Improve template loading
      • Plugin checker
  • Open floor

If you have any topics you’d like to add to this agenda, please add them in the comments below.


This meeting happens in the #core-performance channel. To join the meeting, you’ll need an account on the Make WordPress Slack.

#agenda, #meeting, #performance, #performance-chat

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

New Feature: Font Library

Introduced in WordPress 6.5, the Font Library allows users to manage fonts directly in the editor. It comes with a set of APIs that allow developers to control, adapt, and disable its behavior.

Font Collections

A Font Collection is a list of font family definitions that can be installed by the user via the editor. The font family definition is a fontFamily item in theme.json format. By default, WordPress 6.5 allows users to opt-in to a collection listing for Google Fonts. To allow sites to remain GDPR compliant, installing a Google Font downloads the file to the WordPress server.

When a Font Collection is registered, it will appear in the Font Library UIUI User interface in the editor. From here, users can install and activate fonts from the collection.

Adding a Font Collection

A new Font Collection can be added using the wp_register_font_collection() function. This can be done by supplying a list of font families and their font faces in either PHPPHP The web scripting language in which WordPress is primarily architected. WordPress requires PHP 5.6.20 or higher or 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. format as part of the Font Collection array.

Here is an example of adding a Font Collection in PHP:

$font_families = [
array(
'font_family_settings' => (
array (
'fontFamily' => 'Open Sans, sans-serif',
'slug' => 'open-sans',
'name' => 'Open Sans',
'fontFace' => array (
array (
'fontFamily' => 'Open Sans',
'fontStyle' => 'normal',
'fontWeight' => '300',
'src' => 'https://fonts.gstatic.com/s/opensans/v40/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsiH0C4iY1M2xLER.woff2',
),
array (
'fontFamily' => 'Open Sans',
'fontStyle' => 'italic',
'fontWeight' => '400',
'src' => 'https://fonts.gstatic.com/s/opensans/v40/memQYaGs126MiZpBA-UFUIcVXSCEkx2cmqvXlWq8tWZ0Pw86hd0Rk8ZkaVIUwaERZjA.woff2'
),
),
)
),
'categories' => [ 'sans-serif' ],
),
array(
'font_family_settings' => (
array (
'fontFamily' => 'Monoton, system-ui',
'slug' => 'monoton',
'name' => 'Monoton',
'fontFace' => array (
array (
'fontFamily' => 'Monoton',
'fontStyle' => 'normal',
'fontWeight' => '400',
'src' => 'https://fonts.gstatic.com/s/monoton/v19/5h1aiZUrOngCibe4fkPBQ2S7FU8.woff2',
'preview' => 'https://s.w.org/images/fonts/17.7/previews/monoton/monoton-400-normal.svg'
),
),
)
),
'categories' => [ 'display' ],
),
array(
'font_family_settings' => (
array (
'fontFamily' => 'Arial, Helvetica, Tahoma, Geneva, sans-serif',
'slug' => 'arial',
'name' => 'Arial',
)
),
'categories' => [ 'sans-serif' ],
),
];

$categories = [
array(
'name' => _x( 'Display', 'Font category name' ),
'slug' => 'display',
),
array(
'name' => _x( 'Sans Serif', 'Font category name' ),
'slug' => 'sans-serif',
),
];

$config = array (
'name' => _x( 'My font collection', 'Font collection name' ),
'description' => _x( 'A collection of my favorite fonts.', 'Font collection description' ),
'font_families' => $font_families,
'categories' => $categories,
);

wp_register_font_collection ( 'my-font-collection', $config );

Please note that the name and description fields of the Font Collection array must be translatable, which can be achieved by wrapping the strings in the _x() function. Font Family names are not typically translated. For more information and background discussion, see #60509.

JSON format for the font_families field can be a local path or a remote URLURL A specific web address of a website or web page on the Internet, such as a website’s URL www.wordpress.org that points to the JSON file.

Removing a Font Collection

A Font Collection can be disabled by using the wp_unregister_font_collection() function. Here is an example which disables the default font collection:

add_action( 'init', function() {
wp_unregister_font_collection( 'default-font-collection' );
} );

For more information, see #57980.

Installing and Activating Fonts

Fonts definitions are based on the theme.json format for font settings. “Installing” a font to the site saves the theme.json formatted settings from the collection into the database, so the font can be activated for any theme.

When the font is “activated,” the Global Styles settings for the theme are updated so that the font is included, along with the fonts defined by the theme, and can be used in the typography settings for Global Styles and individual blocks.

When switching to a new theme, installed fonts need to be re-activated, to update the site’s Global Styles settings for that theme. If Global Styles for a theme are reset, this will deactivate all installed fonts, but they will remain installed on the site and can be reactivated as desired.

Additionally, the Font Library can be used to deactivate fonts included with the theme, if they aren’t needed, to improve the loading performance of the site.

Customizing the Fonts Upload Directory

Please note that some of the following details, such as function names, may change prior to the 6.5 release. For more information, see #60751 and 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/ issue #59699.

By default, fonts will be uploaded to the wp-content/fonts directory. However, this location can be customized as required using the font_dir filterFilter Filters are one of the two types of Hooks https://codex.wordpress.org/Plugin_API/Hooks. They provide a way for functions to modify data of other functions. They are the counterpart to Actions. Unlike Actions, filters are meant to work in an isolated manner, and should never have side effects such as affecting global variables and output.. For installations that don’t support modification of the wp-content directory, it is recommended to install the Fonts To Uploads plugin or use the code snippet below.

It is possible to return the location of the fonts upload directory by using wp_get_font_dir().

The example below changes the fonts directory to the WordPress “Uploads” directory (by default, this is wp-content/uploads):

function alter_wp_fonts_dir( $defaults ) {
$wp_upload_dir = wp_get_upload_dir();
$uploads_basedir = $wp_upload_dir['basedir'];
$uploads_baseurl = $wp_upload_dir['baseurl'];

$fonts_dir = $uploads_basedir . '/fonts';
// Generate the URL for the fonts directory from the font dir.
$fonts_url = str_replace( $uploads_basedir, $uploads_baseurl, $fonts_dir );

$defaults['path'] = $fonts_dir;
$defaults['url'] = $fonts_url;

return $defaults;
}
add_filter( 'font_dir', 'alter_wp_fonts_dir' );

When modifying the upload location, it is important to ensure that the chosen location exists and has appropriate read/write permissions set.

Like the wp-content/uploads directory, the fonts upload directory will not adhere to wp_is_file_mod_allowed / DISALLOW_FILE_MODS to prevent font uploads.

For further info, see #59417 and this post.

How to Disable the Font Library

The Font Library is accessible via the editor by default.

Disable the UI

The UI can be disabled using a filter to customize the editor settings:

function disable_font_library_ui( $editor_settings ) { 
$editor_settings['fontLibraryEnabled'] = false;
return $editor_settings;
}

add_filter( 'block_editor_settings_all', 'disable_font_library_ui' );

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

The register_post_type_args() filter can be used to disable the wp_font_family and wp_font_face REST API endpoints:

function my_disable_fonts_rest_api_endpoints( $arg, $post_type ) {
if ( 'wp_font_family' === $post_type || 'wp_font_face' === $post_type ) {
$arg['show_in_rest'] = false;
}

return $arg;
}
add_filter( 'register_post_type_args', 'my_disable_fonts_rest_api_endpoints', 10, 2 );

The rest_endpoints filter can be used to disable the font collections 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. endpoints:

function my_disable_font_collections_rest_api_endpoints( $endpoints ) {
foreach ( $endpoints as $route => $endpoint ){
if ( str_starts_with( $route, '/wp/v2/font-collections' ) ) {
unset( $endpoints[ $route ] );
}
}

return $endpoints;
}
add_filter( 'rest_endpoints', 'my_disable_font_collections_rest_api_endpoints' );

WordPress includes a polyfill for str_starts_with(), so it is safe to run this function in the above code on < PHP 8.0.

This allows extenders to disable the Font Library, while retaining the UI for managing fonts provided by the active theme.

For more info, see #55275 and #57818.

New REST API

The Font Library feature introduces three new REST API endpoints:

For detailed documentation about each of the new endpoints, please refer to the REST API Handbook and #57616.

Props and a massive thank you to everyone who helped put this dev notedev note Each important change in WordPress Core is documented in a developers note, (usually called dev note). Good dev notes generally include a description of the change, the decision that led to this change, and a description of how developers are supposed to work with that change. Dev notes are published on Make/Core blog during the beta phase of WordPress release cycle. Publishing dev notes is particularly important when plugin/theme authors and WordPress developers need to be aware of those changes.In general, all dev notes are compiled into a Field Guide at the beginning of the release candidate phase. together: @mmaattiiaass, @grantmkin, @peterwilsoncc, @youknowriad, @get_dave, @stevenlinx, @leonnugraha.

Update: This dev-note has been modified following a late decision to modify how font files were stored. Please refer to this follow up post on the subject of font file storage.

Update: This dev-note has been modified to update the code examples in the “Disable the REST API” section, as the previous example included the use of unregister_post_type(), which does not work on built-in post types. Please update any references to the previous example.

#6-5, #dev-notes, #dev-notes-6-5

Summary, Dev Chat, March 13, 2024

Start of the meeting in SlackSlack Slack is a Collaborative Group Chat Platform https://slack.com/. The WordPress community has its own Slack Channel at https://make.wordpress.org/chat/., facilitated by @joemcgill.

Announcements

WordPress 6.5 RC 2 was released yesterday, March 12, 2024 and Gutenberg 17.9 was released earlier today. Please continue to help test and provide feedback.

Forthcoming Releases

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.: 6.5

We are in the final weeks before WordPress 6.5 is scheduled to be released, with our final scheduled 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). (RCrelease 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). 3) scheduled for next week.

There are several important changes to our normal development process during the RC stage. For more, see this post: WordPress 6.5 Release Candidate Phase.

Please continue to test the 6.5 release. See this list of key features to test, which was published alongside WP 6.5 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. 3.

@marybaum confirmed the release team for RC3 on Tuesday, March 19, 2024. @audrasjb as the committercommitter A developer with commit access. WordPress has five lead developers and four permanent core developers with commit access. Additionally, the project usually has a few guest or component committers - a developer receiving commit access, generally for a single release cycle (sometimes renewed) and/or for a specific component., with @hellofromtonya on backup and @davidbaumwald as mcpilot; @akshaya will host with @priethor as backup.

@swissspidy also shared that RC3 is the last scheduled RC before the stable release. The topmost priority should be solving the Font Library uploads location as per Josepha’s recent blog post. If you would like to help, there is an open architecture discussion where you can get involved, and a couple of remaining related PRs:

Primarily, we need to find a robust way to ensure that, when deleting a font, the font files are deleted from the right folder. If we don’t have a solution for the above by RC3 we could consider an additional fourth RC.

There are also some open Interactivity API bugs and editor bugs, but nothing severe. It would be helpful if these issues had owners. @joemcgill suggested scheduling another 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. scrub this week to review these issues and assign owners.

Next 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/ release: 18.0

Gutenberg 18.0 is scheduled for release on March 27 and will include these issues.

Discussion

The discussion today started with organizing release squads for 6.5.x and 6.6 releases.

@jorbin confirmed that we’re still looking for folks to be involved in the 6.5.x maintenance releases. Please reach out if you’re available to help with these releases – particularly if you were already involved in the 6.5 releases (but that’s not a requirement).

@priethor has a draft for a post that identifies people who have raised their hands for 6.6.

A related discussion topic is whether we should reevaluate the size of release squads prior to 6.6. This came out of the discussion following the 6.5 release squad announcement (context). There was a discussion around the pros and cons of having larger release squads, including:

  • Larger squads spread the responsibility that used to be focused on just one person to a bigger team. However;
  • It doesn’t feel like there is much need for others to help or be involved when there are so many people responsible for a release.
  • The more individuals, the greater number of relationships and opportunities for both cliques and interpersonal conflictconflict A conflict occurs when a patch changes code that was modified after the patch was created. These patches are considered stale, and will require a refresh of the changes before it can be applied, or the conflicts will need to be resolved..
  • It sometimes leaves the team not knowing who should be making key decisions about features.

There were also suggestions for better documenting the responsibilities both within the release squad and within a lead group. Also, having feature leads would be helpful, i.e. folks spearheading and owning a specific big feature in a release.

@joemcgill suggested that we could review the release squad size as part of a debrief post for 6.5, and @priethor is working on a proposal for a reduced release squad that will be published in the upcoming days.

Highlighted posts

The full list of posts from the last week in CoreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. can be read on the agenda at this link.

Open floor

We did not have time for open floor this week.

Props to @joemcgill for reviewing.

#6-5, #dev-chat, #summary