WordPress 6.3 Release Day Process

Preparation for WordPress 6.3 final release is underway. This post shares the release process, including the timeline and how you can help. The post will be kept up to date as the release process evolves.

Release Timeline Overview

The current plan is as follows:


Dry Run ✅

The Dry Run is a key event as a final walk-through for the final release. As noted above, the current plan is to start it on 2023-08-07 16:00. You are invited to observe and/or participate. It’ll happen in the #core Slack channel.

What happens during the dry run?

  • Review 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. reports 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-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 goes 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.3.0 (i.e., in the 6.3 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 bug 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.3.1.

The Release Party 📅

EDIT: The Release Party will finally start on 2023-08-08 19:00 UTC

The release party on August 8th will start no sooner than 24h after the code freeze starts, with the exact time to be determined accordingly. You are invited to observe and/or participate. It’ll happen 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.3 RC3 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.1.3, 6.2.2, and 6.3 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.3 post.


Thanks to @chanthaboune for the peer review

#6-3, #core, #release-process

A Week in Core – July 31, 2023

Welcome back to a new issue of Week in CoreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress.. Let’s take a look at what changed on TracTrac An open source project by Edgewall Software that serves as a bug tracker and project management tool for WordPress. between July 24 and July 31, 2023.

  • 21 commits
  • 40 contributors
  • 64 tickets created
  • 12 tickets reopened
  • 39 tickets closed

Ticketticket Created for both bug reports and feature development on the bug tracker. numbers are based on the Trac timeline for the period above. The following is a summary of commits, organized by component and/or focus.

Code changes

Administration

  • Update dashboard welcome panel for 6.3 – #58545

Bundled Themes

  • Bump version numbers for WordPress 6.3 – #57857
  • Twenty Twenty-One: Enable Dark Mode in 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 iframeiframe iFrame is an acronym for an inline frame. An iFrame is used inside a webpage to load another HTML document and render it. This HTML document may also contain JavaScript and/or CSS which is loaded at the time when iframe tag is parsed by the user’s browser.#58835

Editor

  • Fix abbreviations of “Example” in block-template-utils.php#58879
  • Fix conditionals in Template Editing Mode – #58889
  • fix duplication in templates list – #57756
  • fix popover positioning – #58847
  • initial update of npm packages for 6.3 RC3 – #58926
  • load title on navigation fallback – #58557
  • second update of npm packages for 6.3 RC3 – #58926
  • update npm packages with 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 for 6.3 RC2 – #58804

Help/About

  • Add illustrations to the Get Involved tab – #23348
  • Escape “Contribute” links, for better consistency – #23348
  • Fix the Get Involved tab on Networknetwork (versus site, blog) Adminadmin (and super admin)#23348
  • Make Contribute links translatable – #23348
  • Remove target="_blank" from the Contribute link – #23348
  • Update “Get involved in WordPress” link on the Credits tab – #23348
  • Updates to About page – #58067

Media

  • Fix Image rotation button overflow in translations – #58877

Props

Thanks to the 40 people who contributed to WordPress Core on Trac last week:

@audrasjb (9), @ramonopoly (5), @markoserb (3), @spacedmonkey (3), @richtabor (3), @mukesh27 (3), @peterwilsoncc (3), @kebbet (2), @joedolson (2), @isabel_brison (2), @huzaifaalmesbah (2), @courane01 (2), @ryelle (2), @davidbaumwald (2), @Ankit K Gupta (1), @jordesign (1), @azaozz (1), @bhrugesh12 (1), @nekojonez (1), @andrewserong (1), @oandregal (1), @scruffian (1), @get_dave (1), @flixos90 (1), @Mamaduka (1), @hasanuzzamanshamim (1), @fierevere (1), @bgardner (1), @mikinc860 (1), @poena (1), @joemcgill (1), @swissspidy (1), @sereedmedia (1), @sabernhardt (1), @kafleg (1), @jakariaistauk (1), @hareesh-pillai (1), @tobifjellner (1), @oglekler (1), and @sergeybiryukov (1).

Core committers: @audrasjb (17), @isabel_brison (2), @sergeybiryukov (1), and @joedolson (1).

#6-3, #core, #week-in-core

A Week in Core – July 24, 2023

Welcome back to a new issue of Week in CoreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress.. Let’s take a look at what changed on TracTrac An open source project by Edgewall Software that serves as a bug tracker and project management tool for WordPress. between July 17 and July 24, 2023.

  • 44 commits
  • 83 contributors
  • 83 tickets created
  • 13 tickets reopened
  • 56 tickets closed

Ticketticket Created for both bug reports and feature development on the bug tracker. numbers are based on the Trac timeline for the period above. The following is a summary of commits, organized by component and/or focus.

Code changes

Administration

  • Add a missing closing span 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.) for column sorting indicators – #32170, #57839
  • Update dashboard welcome panel for 6.3 – #58545

Build/Test Tools

  • Remove outmoded jsvalidate task from Gruntfile – #58645, #26615

Bundled Themes

  • Twenty Twenty-One: Enable Dark Mode in 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 iframeiframe iFrame is an acronym for an inline frame. An iFrame is used inside a webpage to load another HTML document and render it. This HTML document may also contain JavaScript and/or CSS which is loaded at the time when iframe tag is parsed by the user’s browser.#58835
  • Twenty Twenty-Three: Remove the perPage attribute where the query inherits from the global query. The global attribute should be used instead – #58581
  • Twenty Twenty-Three: Revert [55898]#58485

Code Modernization

  • Use str_contains() in a few more places – #58206

Coding Standards

  • Always use parentheses for class instantiation – #58831
  • Correct alignment in wp-includes/media.php#58831
  • Correct equals sign alignment in various files – #58831
  • Remove trailing tabs in wp-admin/about.php#58831, #58067
  • Use strict comparison for static strings in wp-admin/includes/class-wp-list-table.php#32170, #57839

Docs

  • Add a missing word in maybe_create_table() description – #58841
  • Fix indentation issue in WP_REST_Global_Styles_Revisions_Controller class – #57840, #58524
  • Fix various incorrect @since mentions – #58834
  • Various docblocks corrections – #57840

Editor

  • Add test for context setting in Comment Template block – #58839
  • Fix a PHPPHP The web scripting language in which WordPress is primarily architected. WordPress requires PHP 5.6.20 or higher notice appearing when adding a new template part – #57851
  • Fix abbreviations of “Example” in block-template-utils.php#58879
  • Fix 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. where it was not possible to style custom block elements in theme.json#57868
  • fix popover positioning – #58847
  • load title on navigation fallback – #58557
  • update npm packages with bug fixes for 6.3 RC2 – #58804

External Libraries

  • Update deprecated jQuery code in Farbtastic lib – #57946

General

  • Commit changes after running precommit:css#57856, #58869
  • Rename wp_in_development_mode() to wp_is_development_mode()#57487

HTMLHTML HyperText Markup Language. The semantic scripting language primarily used for outputting content in web browsers. 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.

  • Change wp infix in test classes to Wp#58899
  • Introduce minimal HTML Processor – #58517

Help/About

  • Add illustrations to the Get Involved tab – #23348
  • String changes in the Contribute screen – #23348
  • Update the About page for 6.3 – #58067
  • Updates to About page – #58067

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.

  • Add missing translator comment in WP_Upgrader::generic_strings()#58831

Media

  • Adjust PDF upload handling to remove non-opaque alpha channels from previews – #39216
  • Fix Image rotation button overflow in translations – #58877
  • Fix height max value in image scaling – #50523
  • Stop using and deprecate set_imagick_time_limit(). Seems it causes more problems than it solves – #58202

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/.

  • Update Global styles 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. private methods to protected – #58846

Script Loader

  • Improve test coverage for wp_print_scripts()#58648

Upgrade/Install

  • Add correct parameters to add_option in upgrade_630 – #58821

Props

Thanks to the 83 (!) people who contributed to WordPress Core on Trac last week:

@costdev (11), @audrasjb (7), @joemcgill (7), @ramonopoly (6), @mukesh27 (6), @jrf (5), @peterwilsoncc (5), @azaozz (4), @flixos90 (4), @markoserb (4), @oglekler (4), @richtabor (4), @swissspidy (3), @spacedmonkey (3), @joedolson (3), @sergeybiryukov (3), @jorbin (2), @poena (2), @desrosj (2), @dmsnell (2), @dunhakdis (2), @huzaifaalmesbah (2), @westonruter (2), @peterwilson (1), @ryelle (1), @andrewserong (1), @gudmdharalds (1), @glendaviesnz (1), @oandregal (1), @TobiasBg (1), @Malae (1), @sabernhardt (1), @Presskopp (1), @mrinal013 (1), @Rahmohn (1), @mikachan (1), @robinwpdeveloper (1), @onemaggie (1), @dsar (1), @antpb (1), @hberberoglu (1), @mtxz (1), @densityapps (1), @ekazda (1), @matt_fw (1), @jameskoster (1), @soulseekah (1), @mikeschroder (1), @wildworks (1), @davidbaumwald (1), @annezazu (1), @saxonafletcher (1), @mwtsn (1), @hasanuzzamanshamim (1), @Ankit K Gupta (1), @get_dave (1), @scruffian (1), @nekojonez (1), @jordesign (1), @bhrugesh12 (1), @kebbet (1), @isabel_brison (1), @zieladam (1), @gitlost (1), @launchinteractive (1), @emirpprime (1), @ceer (1), @joen (1), @maysi (1), @madejackson (1), @6adminit (1), @crstauf (1), @james0r (1), @jpantani (1), @dansoschin (1), @mikinc860 (1), @priethor (1), @marybaum (1), @eidolonnight (1), @clarkeemily (1), @cbringmann (1), @meher (1), and @youknowriad (1).

Congrats and welcome to our 7 new contributors of the week: @mwtsn, @launchinteractive, @ceer, @maysi, @madejackson, @6adminit, @james0r ♥️

Core committers: @audrasjb (10), @sergeybiryukov (9), @isabel_brison (4), @ryelle (4), @bernhard-reiter (3), @joedolson (2), @davidbaumwald (2), @azaozz (2), @joemcgill (2), @desrosj (1), @antpb (1), @mikeschroder (1), @spacedmonkey (1), @flixos90 (1), and @kadamwhite (1).

#6-3, #core, #week-in-core

6.3 Live Product Demo Q&A

Honoring a WordPress tradition, this post will recap the question-and-answer segment of the 6.3 Live Product Demo.

6.3 release squad members, Anne McCarthy and Rich Tabor, prepared a live product demonstration, moderated by Nathan Wrigley, to highlight aspects of this monumental release. You can read some of the highlights or watch the recording below.

6.3 Live Product Demo

The panelists answered a number of questions for attendees.

Q1: It felt like Phase 2 went on longer than expected, producing ongoing quality-of-life improvements to the Site Editor. It’s been, in a word, wonderful. While I’m excited for Phase 3 and what lies ahead, is it possible Phase 2 aspects will continue to be revisited and refined concurrently with Phase 3, or is this expect to be a more thorough wind-down — meaning the Site Editor in 6.3 is roughly where it is expected to be going forward?

A1: There’s more to come, and the work isn’t over. Check out this overview GitHub issue here for what’s already planned for iteration.

Q2: Can you assign Patterns to Categories?

A2: Not yet. More info here for anyone interested in the details within this GitHub issue.

Q3: But there are no 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. at the style book, or did I miss this?

A3: The revisions show changes for all of styles, including changes made when viewing the style book.

Q4: Is this doc you created accessible? The one with the different uses for the Reusable Blocks, Patterns, etc?

A4: For more information, read the overview on comparing patterns template parts, and reusable blocks (now synced patterns.)

Q5: For classic themes, will it be possible to access the pattern editor? Either directly or indirectly?

A5: Classic themes can create patterns, and the reusable 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. management screen is reused to store them. More info on the Patterns section, specifically in the Site Editor being exposed for Classic Themes here in this GitHub issue. Great spot to share feedback!

Q6: There are no revisions in the style book, or did I miss this?

A6: The revisions show changes for all of styles, including changes made when viewing the style book.

Q7: Are footnotes finalized, and will they be released in WP 6.3?

A7: Yes, they will.

Q8: Do we have any rough ideas of previewing a theme, working on it, saving that, but NOT activating or scheduling when it goes live

A8: Some rough ideas here from prior design efforts.

Q9: From my testing, I found that you don’t need to highlight anything to add a footnote number, just place the cursor behind the word where the footnote numbrt should go… Is that a hidden feature or a 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.?

A9: It’s a feature! Though I find selecting more intuitive.

Q10: Is there any option to apply global styles (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. variations) to different templates separately? btw new aspect ratio input is cool!

A10: Not yet, but on the radar. I’d love to be able to apply variations to templates, even patterns. Calling them Theme.json Partials (partially applied theme.json). 

Q11: With 6.3, CSSCSS Cascading Style Sheets. Grids come to query builder. But what is the plan for CSS grids in the group block (Row, Stack, and Grid)? And will it be a full implementation or a limited one (as the current limited Flexbox implementation in Row features)?

A11: Here is some additional info on layout updates in the editor.

Q12: Is there any information about the possibility of applying multiple block styles to blocks? Also info about block styles to be applied just to block variation, not the coreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. block? Struggling with creating styles and variations.

A12: Not multiple block styles, but you can design a block variation within the Style Book.

Q13: Is there any news regarding native multilingual support in Core?

A13: Not quite as multilingual support is slated for Phase 4 on the WordPress roadmap.

Q14: Regarding the rollback of failed manual plugins and theme updates. This will happen even if the updates break and make the website fails with a fatal error like some kind of recovery mode.

A14: For more information on failed manual 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 updates, check out this Core post.

Additional references mentioned during the live product demo

#6-3, #live-product-demo

WordPress 6.3 Accessibility Improvements

Thank you to @joedolson and @alexstine for collaborating to write this post.

With WordPress 6.3 set to launch on August 8th, 2023, this post seeks to provide an overview of the many 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 and fixes coming to the next major WordPress release. As always, there’s more work to be done with accessibility requiring an ongoing effort and commitment. 

If you’re interested in helping with this work, please join the #accessibility channel in Make 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/. and check out how you can get involved. There are numerous ways to get involved in this important work including testing, giving accessibility feedback, and creating PRs to address feedback.

Site Editor

In order to keep up with the changes brought by the addition of more features in the Site Editor, including being able to add pages and patterns, the following work was completed:

List View

List View remains an important and powerful tool for navigating complex content. To ensure all can benefit, the following accessibility related efforts were completed: 

General 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 experience

Work continues to improve the base block experience, especially since improving blocks enhances the experience across all parts of your site. In particular, work to streamline link editing included a specific accessibility focus. 

Administration

Upgrade/Install

Other

#6-3

WordPress 6.3 Release Candidate Phase

Now that WordPress 6.3 has entered the Release Candidate phase, the following policies are in place.

These policies mainly cover how and when CoreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. committers can commit. For non-committing contributors, this post may help explain why a Core 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. makes a certain decision.

String Freeze

To allow the Polyglots teamPolyglots Team Polyglots Team is a group of multilingual translators who work on translating plugins, themes, documentation, and front-facing marketing copy. https://make.wordpress.org/polyglots/teams/. time to get their local language’s translationtranslation The process (or result) of changing text, words, and display formatting to support another language. Also see localization, internationalization. of WordPress ready, no new strings are permitted to be added to the release. Existing strings can be removed and/or duplicated if needed.

Seek guidance from the Polyglots team leadership for any strings reported as buggy. A buggy string is one that can not be translated to all languages in its current form. 

Tickets on the WordPress 6.3 milestone

For the remainder of the cycle, only two types of tickets may be placed on/remain on the 6.3 milestone:

  • Regressions: bugs that have been introduced during the WordPress 6.3 development cycle, either to existing or new features.
  • Test suite expansion: tests can be committed at any time without regard to code or string freezes. This can cover either new or existing features.

Trunktrunk A directory in Subversion containing the latest development code in preparation for the next major release cycle. If you are running "trunk", then you are on the latest revision. is now WordPress 6.4-alpha

WordPress 6.3 was recently forked to its own branch, and trunk is now open for commits for the next version of the software.

Backporting to the 6.3 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".

Backporting commits of production code (that is, anything that ends up in the zip file) now requires double sign-off by two core committers. The dev-feedback keyword should be used to request a second committer’s review, dev-reviewed should be added to indicate a second committer has reviewed and approved the commit to the 6.3 branch.

Commits to the test suite do not require double sign-off.

Props to @mikeschroder and @davidbaumwald for peer review.

#6-3, #6-4

A Week in Core – July 17, 2023

Welcome back to a new issue of Week in CoreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress.. Let’s take a look at what changed on TracTrac An open source project by Edgewall Software that serves as a bug tracker and project management tool for WordPress. between July 10 and July 17, 2023.

  • 78 commits
  • 135 contributors
  • 61 tickets created
  • 12 tickets reopened
  • 70 tickets closed

Ticketticket Created for both bug reports and feature development on the bug tracker. numbers are based on the Trac timeline for the period above. The following is a summary of commits, organized by component and/or focus.

Code changes

Administration

  • Add a missing closing `span> 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.) for column sorting indicators – #32170, #57839

Bootstrap/Load

  • Require wp-includes/compat.php in src/index.php#58206

Build/Test Tools

  • Remove outmoded jsvalidate task from Gruntfil – #58645, #26615
  • Prevent 404 errors in the E2E tests – #58777
  • Reset main query object after each test – #58776
  • Suppress E2E test suite 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/. notifications – #58779
  • Add tests to ensure the contribute Toolbar node is added when appropriate
  • Use assertSame() in Tests_Comment – #57855

Bundled Theme

  • fix height of featured images in Twenty Twenty Three – #58766
  • Twenty Seventeen: Use wp_register_script() to register HTML5 Shiv script – #56699
  • Twenty Twenty-Three: Add a border to Quote 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.#57506
  • Twenty Twenty-Three: Remove the perPage attribute where the query inherits from the global query. The global attribute should be used instead – #58581
  • Twenty Twenty-Three: Revert [55898]#58485

Code Modernization

  • Use str_contains() in a few more places – #58206

Coding Standards

  • Use single quotes for a string in Tests_Comment#57855
  • Use strict comparison for static strings in wp-admin/includes/class-wp-list-table.php#32170, #57839
  • Use strict comparison in wp-includes/class-wp-network.php#57839
  • Use strict comparison in wp-includes/class-wp-rewrite.php#57839
  • Use strict comparison in wp-includes/load.php#57839
  • Use strict comparison in wp-includes/rewrite.php#57839

Docs

  • Clarify where the wp_get_development_mode() value is retrieved from – #57487, #57840
  • Fix incorrect type for $crop param is various WP_Image_Editor classes and methods – #58271, #57840
  • Fix various incorrect @since mentions – #58834, #57840
  • Replace multiple single line comments with multi-line comments – #58459
  • Replace multiple single line comments with multi-line comments – #58459
  • Replace multiple single line comments with multi-line comments – #58459
  • Replace multiple single line comments with multi-line comments – #58459
  • Replace multiple single line comments with multi-line comments – #58459
  • Replace multiple single line comments with multi-line commentsProps costdev, audrasjb – #58459
  • Use consistent wording for development mode – #57487, #57840
  • Various docblocks corrections – #57840

Editor

  • Add test for context setting in Comment Template block – #58839
  • Fix a PHPPHP The web scripting language in which WordPress is primarily architected. WordPress requires PHP 5.6.20 or higher notice appearing when adding a new template part – #57851
  • Fix 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. where it was not possible to style custom block elements in theme.json#57868
  • Fix layout of no-js state in site editor – #56228
  • Fix open_basedir warnings on the classic Edit Post screen when additional TinyMCE plugins are use – #54354
  • Lazily load Duotone settings only when needed – #58673
  • fix duotone filters in classic themes – #58734#46132
  • fix since annotation in rest blocks controller class – #58677
  • opt out of Navigation fallback – #58750
  • remove one preloaded navigation endpoint – #58749
  • trim footnote anchors from post excerpts – #58805
  • update npm packages with bug fixes and blessed tasks – #58745
  • update npm packages with first round of bug fixes for 6.3 RC1 – #58804
  • update npm packages with second round of bug fixes for 6.3 RC1 – #58804
  • update string incorrectly marked for translationtranslation The process (or result) of changing text, words, and display formatting to support another language. Also see localization, internationalization. in Chrome – #58716

External Libraries

  • Update deprecated jQuery code in Farbtastic lib – #57946

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.

  • Ensure wp_tempnam() does not produce file names longer than 255 characters as this is the limit on most filesystems – #35755

General

  • Escape nonce used for block theme activation – #58712
  • Introduce all development mode – #57487
  • Rename wp_in_development_mode() to wp_is_development_mode()#57487
  • add nonce for block theme preview activation – #58712
  • fix botched file move in r56199#58712

Help/About

  • Add a “Get Involved” tab to the About page – #23348
  • Adjust horizontal padding on the tabs under 960 pixels width – #23348
  • Fix closing contextual help when scrolled – #55342
  • Fix typo in [56171]: support forumSupport Forum WordPress Support Forums is a place to go for help and conversations around using WordPress. Also the place to go to report issues that are caused by errors with the WordPress code and implementations. “topic”, not “ticket”
  • String changes in the Contribute screen – #23348
  • Update the About page for 6.3 – #58067
  • Update “Get Involved” tab content with the latest edits – #23348

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.

  • Improve the use of dashicons-external icon for external links – #47303
  • Move translator comments inside sprintf for tagline field description – #57675

Media

  • Fix adminadmin (and super admin) image editor layout at intermediary widths – #58692
  • Fix responsive views in image editor – #58692
  • Improve layout of image rotation options panel – #58756
  • Optimize images created in shortcodes – #58681
  • Set default state for image rotation button – #58800
  • Stop using and deprecate set_imagick_time_limit(). Seems it causes more problems than it solves – #58202

Menus

  • Fix critical errors when the page_on_front and/or page_for_posts options contain references to non-existing posts – #58345

Script Loader

  • Improve test coverage for wp_print_scripts()#58648

Toolbar

  • Make the ‘Edit site’ link open the editor with the current template – #58746

Upgrade/Install

  • Add correct parameters to add_option in upgrade_630 – #58821

Props

Thanks to the 135 (!) people who contributed to WordPress Core on Trac last week:

@costdev (24), @mukesh27 (13), @audrasjb (13), @sergeybiryukov (12), @ramonopoly (9), @poena (9), @sabernhardt (8), @spacedmonkey (8), @flixos90 (8), @swissspidy (8), @joemcgill (7), @peterwilsoncc (7), @oglekler (7), @afercia (6), @joedolson (6), @azaozz (5), @mrinal013 (4), @aristath (4), @desrosj (3), @wildworks (3), @westonruter (3), @mikinc860 (3), @davidbaumwald (3), @richtabor (3), @eidolonnight (3), @andrewserong (3), @jpantani (2), @nithi22 (2), @annezazu (2), @priethor (2), @tobifjellner (2), @marybaum (2), @dunhakdis (2), @vivekawsm (2), @robinwpdeveloper (2), @meher (2), @mikeschroder (2), @get_dave (2), @SeReedMedia (2), @antpb (2), @Presskopp (2), @ryelle (2), @nithins53 (2), @jameskoster (2), @alexstine (2), @ajlende (2), @scruffian (2), @isabel_brison (2), @jorbin (2), @mikachan (2), @nacin (1), @jeffmora (1), @bridgetwillard (1), @jenmylo (1), @boemedia (1), @davidmusnik (1), @lukecavanagh (1), @mehdi01 (1), @hugobaeta (1), @TacoVerdo (1), @joostdevalk (1), @johnbillion (1), @markoheijnen (1), @helen (1), @bacoords (1), @fierevere (1), @skorasaurus (1), @andraganescu (1), @dhrumilk (1), @zoonini (1), @akrocks (1), @nidhidhandhukiya (1), @syamraj24 (1), @jomonthomaslobo1 (1), @Toro_Unit (1), @eric.7186 (1), @thunderdw (1), @paaljoachim (1), @courane01 (1), @clubkert (1), @Shelob9 (1), @beckej (1), @abitofmind (1), @Mamaduka (1), @thekt12 (1), @antonvlasenko (1), @mohiuddinomran (1), @estelaris (1), @webcommsat (1), @cathibosco1 (1), @deepakvijayan (1), @mt_suzette (1), @Malae (1), @soulseekah (1), @matt_fw (1), @ekazda (1), @densityapps (1), @mtxz (1), @hberberoglu (1), @dsar (1), @onemaggie (1), @TobiasBg (1), @Rahmohn (1), @oandregal (1), @glendaviesnz (1), @gudmdharalds (1), @saxonafletcher (1), @joen (1), @markoserb (1), @cbringmann (1), @clarkeemily (1), @peterwilson (1), @youknowriad (1), @karmatosed (1), @MadtownLems (1), @brasofilo (1), @jeryj (1), @nazmul111 (1), @Chouby (1), @suzettefranck (1), @ugyensupport (1), @ibrahimmonir (1), @njsamsatli (1), @rembem (1), @mcsf (1), @josklever (1), @wplindavantol (1), @hbhalodia (1), @dansoschin (1), @Heiko_Mamerow (1), @piotrek (1), @mai21 (1), @studionashvegas (1), @mikecho (1), and @doems (1).

Congrats and welcome to our 23 (!!) new contributors of the week: @jeffmora, @davidmusnik, @mehdi01, @beckej, @mohiuddinomran, @mt_suzette, @matt_fw, @ekazda, @densityapps, @mtxz, @hberberoglu, @dsar, @gudmdharalds, @saxonafletcher, @nazmul111, @suzettefranck, @ibrahimmonir, @njsamsatli, @rembem, @wplindavantol, @Heiko_Mamerow, @mikecho ♥️

Core committers: @audrasjb (17), @sergeybiryukov (17), @isabel_brison (13), @joedolson (7), @azaozz (6), @joemcgill (5), @peterwilsoncc (5), @davidbaumwald (2), @spacedmonkey (2), @ryelle (1), @bernhard-reiter (1), @flixos90 (1), @kadamwhite (1), @jorbin (1), and @mikeschroder (1).

#6-3, #core, #week-in-core

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)

#6-3, #field-guide

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

#6-3, #field-guide

Miscellaneous developer changes in WordPress 6.3

Administration

Added the no-store and private directives to the Cache-Control 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. to prevent caching for logged in users. This prevents sensitive data on logged-in users from being cached and available to others, for example, via the browser history after the user logs out. (#21938)

External Libraries

jQuery has been updated from v3.6.4 to v3.7.0. (#58083)

The latest version of jQuery includes 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, a new method called .uniqueSort(), Sizzle selector engine, and a performance improvement for some use cases when using manipulation methods like .append().

The .uniqueSort() method is used to sort an array or an array-like object of DOM elements and remove any duplicate nodes.

Sizzle, its selector engine, has been included as inlined code and removed as a project dependency, along with the removal of some workarounds for legacy browsers in the process.

References:

Login and Registration

Adding required attributes to username and password input fields

In WordPress 6.3, the WordPress login form includes the required attributes for username and password fields, resolving ticketticket Created for both bug reports and feature development on the bug tracker. #32510. This change, while minor, may have some ramifications for pluginPlugin A plugin is a piece of software containing a group of functions that can be added to a WordPress website. They can extend functionality or add new features to your WordPress websites. WordPress plugins are written in the PHP programming language and integrate seamlessly with WordPress. These can be free in the WordPress.org Plugin Directory https://wordpress.org/plugins/ or can be cost-based plugin from a third-party developers.

The change adds semantic clarity to explicitly mark these fields as required, reinforcing the implied expectation that has always been in place for login fields.

Impact for Developers

Plugins that bypass login fields or login via alternative methods using the login page may need to adapt by removing the input fields or removing the required attribute.

Props @joedolson for the 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..

Media

The fallback return value in get_the_author() is corrected to return an empty string if called before $authordata is set. This fixes PHPPHP The web scripting language in which WordPress is primarily architected. WordPress requires PHP 5.6.20 or higher 8.1 “null to non-nullable” deprecation notice in ent2ncr() function that is hooked via the_author 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.. (#58157)

Plugins

A new plugins_list filter hook is introduced, which can be used to filter the list of plugins (including those that are “must-use / mu”) that are displayed on the WP Adminadmin (and super admin) Plugins screen. (#57278)

function wporg_filter_plugins_list( $plugins ) {
	unset( $plugins['all']['test-plugin/test.php'] );
	return $plugins;
}
add_filter( 'plugins_list', 'wporg_filter_plugins_list' );

Posts, Post Types

A new post type label item_trashed is introduced, which allows 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 to announce the correct message when an entity is moved to the TrashTrash Trash in WordPress is like the Recycle Bin on your PC or Trash in your Macintosh computer. Users with the proper permission level (administrators and editors) have the ability to delete a post, page, and/or comments. When you delete the item, it is moved to the trash folder where it will remain for 30 days.. (#51387)

Themes

Non-block themes without theme.json can opt-in to block link color tools and block border tools via add_theme_support(). (#58597 and #58598)

In the callback function that is hooked to the after_setup_theme action in your functions.php of your theme, add the following inside the function:

opt-in to block link color tools:

add_theme_support( 'link-color' );

opt-in to block border tools:

add_theme_support( 'border' );


Props to @audrasjb for the visual assets.

Users

A new wp_update_user action hook is introduced, which fires after the user has been updated and emails have been sent. (#57843)

add_action( 'wp_update_user', function ( $user_id, $userdata, $userdata_raw ) {
        echo $user_id;
        print_r( $userdata );
        print_r( $userdata_raw );
        exit;
}, 10, 3 );

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

#6-3, #dev-notes, #dev-notes6-3

Bundled themes dropping Internet Explorer scripts and styles

Due to very low traffic from Internet Explorer users, and because WordPress no longer supports this obsolete browser, default themes have removed some IE-specific scripts and styles to give everyone else a better experience.

Most default themes had a skip-link focus fix script for navigating by keyboard in Internet Explorer and old versions of Chrome. As of WordPress 6.3, Twenty Thirteen and Twenty Fourteen no longer include it in their functions.js files, and the six themes from Twenty Fifteen to Twenty Twenty-One do not enqueue or print the script.

In addition, special stylesheets and the HTML5 Shiv script are not enqueued or included in the header.php template for three themes:

  • Twenty Thirteen (its conditional code is also removed)
  • Twenty Fifteen
  • Twenty Seventeen

Future versions of Twenty Eleven, Twenty Twelve, Twenty Fourteen and Twenty Sixteen may remove their special styles and conditional code too.

What if I want to continue supporting Internet Explorer?

Twenty Thirteen users can add a minified version of the script found in later themes:

function wpdocs_twentythirteen_add_skip_link_fix_inline() {
	wp_add_inline_script(
		'twentythirteen-script',
		'/(trident|msie)/i.test(navigator.userAgent)&&document.getElementById&&window.addEventListener&&window.addEventListener("hashchange",function(){var t,e=location.hash.substring(1);/^[A-z0-9_-]+$/.test(e)&&(t=document.getElementById(e))&&(/^(?:a|select|input|button|textarea)$/i.test(t.tagName)||(t.tabIndex=-1),t.focus())},!1);'
	);
}
add_action( 'wp_enqueue_scripts', 'wpdocs_twentythirteen_add_skip_link_fix_inline', 11 );

Twenty Fourteen would need an adjustment for the fixed 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.:

function wpdocs_twentyfourteen_add_skip_link_fix_inline() {
	wp_add_inline_script(
		'twentyfourteen-script',
		'/(trident|msie)/i.test(navigator.userAgent)&&document.getElementById&&window.addEventListener&&window.addEventListener("hashchange",function(){var t,e=location.hash.substring(1);/^[A-z0-9_-]+$/.test(e)&&(t=document.getElementById(e))&&(/^(?:a|select|input|button|textarea)$/i.test(t.tagName)||(t.tabIndex=-1),t.focus(),window.scrollBy(0,-80))},!1);'
	);
}
add_action( 'wp_enqueue_scripts', 'wpdocs_twentyfourteen_add_skip_link_fix_inline', 11 );

Enqueue the theme’s script for Twenty Fifteen, Twenty Sixteen or Twenty Seventeen:

function wpdocs_twentyseventeen_add_skip_link_fix() {
	wp_enqueue_script( 'twentyseventeen-skip-link-focus-fix' );
}
add_action( 'wp_enqueue_scripts', 'wpdocs_twentyseventeen_add_skip_link_fix' );

Add the theme’s function to the wp_print_footer_scripts action for Twenty Nineteen, Twenty Twenty or Twenty Twenty-One:

add_action( 'wp_print_footer_scripts', 'twenty_twenty_one_skip_link_focus_fix' );

Restoring conditional code, styles and scripts

Sites may have been severely broken when using old versions of Internet Explorer, even with the HTML5 Shiv script and IE-specific styles, but you could add them again.

If you have a child themeChild theme A Child Theme is a customized theme based upon a Parent Theme. It’s considered best practice to create a child theme if you want to modify the CSS of your theme. https://developer.wordpress.org/themes/advanced-topics/child-themes/. of Twenty Thirteen, you can ensure it has a header.php template that includes the conditional code and HTML5 script from previous versions of the theme. Then you could enqueue the styles in the child theme functions (or 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).

function wpdocs_twentythirteen_ie_restore() {
	wp_enqueue_style( 'twentythirteen-ie' );
}
add_action( 'wp_enqueue_scripts', 'wpdocs_twentythirteen_ie_restore' );

For Twenty Fifteen, you could enqueue the two IE stylesheets. If a child theme does not already have the HTML5 script in a header.php template, the same function could enqueue that too.

function wpdocs_twentyfifteen_ie_restore() {
	// Enqueue stylesheets.
	wp_enqueue_style( 'twentyfifteen-ie' );
	wp_enqueue_style( 'twentyfifteen-ie7' );

	// If the header template does not have the HTML5 script already, enqueue it.
	wp_enqueue_script(
		'twentyfifteen-html5',
		get_template_directory_uri() . '/js/html5.js',
		array(),
		'3.7.0',
		false
	);
	wp_script_add_data( 'twentyfifteen-html5', 'conditional', 'lt IE 9' );
}
add_action( 'wp_enqueue_scripts', 'wpdocs_twentyfifteen_ie_restore' );

With Twenty Seventeen, both the style and script can be enqueued.

function wpdocs_twentyseventeen_ie_restore() {
	wp_enqueue_style( 'twentyseventeen-ie8' );
	wp_enqueue_script( 'html5' );
}
add_action( 'wp_enqueue_scripts', 'wpdocs_twentyseventeen_ie_restore' );

For more details, see TracTrac An open source project by Edgewall Software that serves as a bug tracker and project management tool for WordPress. tickets #54421 and #56699.

Props to @westonruter and @joedolson for technical review, to @stevenlinx and @audrasjb for review.

#6-3, #bundled-theme, #core-themes, #dev-notes, #dev-notes6-3