The WordPress coreCoreCore is the set of software required to run WordPress. The Core Development Team builds WordPress. development team builds WordPress! Follow this site for general updates, status reports, and the occasional code debate. There’s lots of ways to contribute:
Found a bugbugA 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.?Create a ticket in our bug tracker.
Updates from Release Co-ordinators and members of the squad.
Useful resources
5. Open floor
If you have any items for Open Floor, please add them in the comments below.
If you are a component maintainer and wish to raise a ticketticketCreated for both bug reports and feature development on the bug tracker. in dev chat or give an update, you can also add information in the comments section.
Thanks to @marybaum and @webcommsat for working on the agenda and meeting planning.
Could you help with the summary from this week’s meeting? Comment below or message CoreCoreCore is the set of software required to run WordPress. The Core Development Team builds WordPress. Team reps @marybaum and @audrasjb in the Core Slack channel.
Welcome back to a new issue of Week in CoreCoreCore is the set of software required to run WordPress. The Core Development Team builds WordPress.. Let’s take a look at what changed on TracTracAn open source project by Edgewall Software that serves as a bug tracker and project management tool for WordPress. between May 9 and May 16, 2022.
20 commits
36 contributors
45 tickets created
12 tickets reopened
45 tickets closed
The Core team is currently working on the next major releasemajor releaseA 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., WP 6.0, and released 6.0 RCrelease candidateOne 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). 2 🛠
TicketticketCreated 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 design of the Dashboard welcome panel – #55532
Build/Tests Tools
Expand the test for conditional tags returning early if $wp_query is not set – #55104
Use a data provider in the test for conditional tags returning early if $wp_query is not set – #55104
Bundled Themes
Twenty Twenty-One: Add a missing HTMLHTMLHyperText Markup Language. The semantic scripting language primarily used for outputting content in web browsers. comment to indicate the end of .post-thumbnail section – #55724
Twenty Twenty-One: i18ni18nInternationalization, 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. fix for privacy policy section title – #55709
Restore the $pieces variable for SQL clauses in query classes – #55699
Restore the $pieces variable in WP_Query::get_posts() – #55699
Database
Use generic references to a database server in ms_not_installed() – #55701
Docs
Replace Codex URLURLA specific web address of a website or web page on the Internet, such as a website’s URL www.wordpress.org with a corresponding HelpHub article in the Additional CSSCSSCascading Style Sheets. section in CustomizerCustomizerTool built into WordPress core that hooks into most modern themes. You can use it to preview and modify many of your site’s appearance settings. – #55710, #48987
Docs: Use third-person singular verbs for function descriptions in the WP_Network class – #55646
Welcome back to a new issue of Week in CoreCoreCore is the set of software required to run WordPress. The Core Development Team builds WordPress.. Let’s take a look at what changed on TracTracAn open source project by Edgewall Software that serves as a bug tracker and project management tool for WordPress. between May 2 and May 9, 2022.
35 commits
64 contributors
61 tickets created
12 tickets reopened
51 tickets closed
The Core team is currently working on the next major releasemajor releaseA 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., WP 6.0, and released 6.0 RCrelease candidateOne 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 🛠
TicketticketCreated 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
Build/Test Tools
Add the 6.0 branchbranchA 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". to the workflow for testing branches
Allow the local development environment to run on Apple M1 machines without requiring local configuration changes – #52356
Ensure version number is in ‘X.X’ format after float math: Tests_Basic::test_security_md() – #55667
Pass GitHubGitHubGitHub is a website that offers online implementation of git repositories that can 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/ Actions environment variables to the Docker container – #55668
Improve the logic of the SECURITY.md test to check all supported versions – #55667
Move get_inline_data() tests to a more appropriate place – #55652
Temporarily disable the test for “Supported Versions” section of GitHub Security Policy
Code Modernization
Rename parameters that use reserved keywords in wp-admin/includes/template.php – #55650
Rename parameters to match native PHPPHPThe web scripting language in which WordPress is primarily architected. WordPress requires PHP 5.6.20 or higher functions in wp-includes/compat.php – #55650
Coding Standards
Remove extra space in wp-admin/admin-ajax.php – #55692
Docs
Correct parameter types for serialize_block() and serialize_blocks() – #55648, #54729
Improve plugin_install_action_linksfilterFilterFilters 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.’s docs – #55480
Remove @return void from various DocBlocks – #54729
Editor
Add unit testunit testCode written to test a small piece of code or functionality within a larger application. Everything from themes to WordPress core have a series of unit tests. Also see regression. for Comment Template blockBlockBlock 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. – #55643, #55634
Sets ‘paged’ query arg only when there are comments: build_comment_query_vars_from_block() – #55658
Update WordPress packages for 6.0 BetaBetaA 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. 4 – #55567
Add missing strongtagtagA 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.) to some error messages – #54437
Help/About
Add link to 6.0 Field GuideField guideThe field guide is a type of blogpost published on Make/Core during the release candidate phase of the WordPress release cycle. The field guide generally lists all the dev notes published during the beta cycle. This guide is linked in the about page of the corresponding version of WordPress, in the release post and in the HelpHub version page., fix missing placeholder in string – #55434
Remove duplicate HTMLHTMLHyperText Markup Language. The semantic scripting language primarily used for outputting content in web browsers. IDs – #55575, #35483
REST APIREST APIThe 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/.
Fixes /wp/v2/pattern-directory/patterns endpoint response for slug parameter – #55617
Script Loader
Explain why i18ni18nInternationalization, 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. prevents concatenation – #55628
WordPress 6.0 Release Candidate 1 (released on May 3, 2022). This was the hard string freeze for the 6.0 and branchbranchA 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". for the release. You can help by taking part in testing and make the release the best it can be. Thank you to everyone who came to the release parties this week.
WordPress 6.0 Beta 4 was released on May 2, 2022. It was not part of the originally published development cycle. It was aimed at providing an opportunity for testing some specific issues that were resolved since BetaBetaA 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.
Early focused meetings will take place on Mondays at a revised time of 18:00 UTC. Thanks to @costdev for working on this. These meetings will mean early tickets can get the attention they need, without disrupting devchat/bugbugA 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. scrubs. Thanks to @costdev who will be running these meetings. The meetings will focus on:
targeting 3-4 tickets per meeting, discussing the proposal/bug
updating the ticketticketCreated for both bug reports and feature development on the bug tracker. with opinions/findings
for some tickets that require investigation, some of the investigation might be possible during the meeting, otherwise we could schedule a date/time for contributors to get together to do any necessary deep-dives (either in chat, or via mob programming)
What’s New in Gutenberg 13.1 (April 27, 2022) GutenbergGutenbergThe 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/ 13.1 brings border support to the Columns blockBlockBlock 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., a number of improvements to the Comments blocks, along with a range of accessibilityAccessibilityAccessibility (commonly shortened to a11y) refers to the design of products, devices, services, or environments for people with disabilities. The concept of accessible design ensures both “direct access” (i.e. unassisted) and “indirect access” meaning compatibility with a person’s assistive technology (for example, computer screen readers). (https://en.wikipedia.org/wiki/Accessibility) enhancements.
A new project board is being considered for 6.0.x releases for Core Editor issues as there are a few that are slated for a point releaseMinor ReleaseA set of releases or versions having the same minor version number may be collectively referred to as .x , for example version 5.2.x to refer to versions 5.2, 5.2.1, 5.2.3, and all other versions in the 5.2 (five dot two) branch of that software. Minor Releases often make improvements to existing features and functionality.. Stay tuned there but know bugs are being handled appropriately and are very much appreciated.
6.0 RC 2 is next week on May 10, 2022 and I hope to see you all at the release party! Expect it to be around the same time at 16:00UTC.
About page:
@marybaum: Well I believe the About Page strings got committed ahead of the hard string freeze, and the rest of that process is going as it has in recent releases.
@annezazu: The 6.0 video in progress will also be ready in time for a commit just before the final release. It will be linked in the About Page.
@ryelle: The About page should be pretty much done – any feedback about things looking broken is welcome, but the only changes planned are to add in the correct links.
Some other useful resources on 6.0
A recap of some of the useful resources on 6.0 including the Field GuideField guideThe field guide is a type of blogpost published on Make/Core during the release candidate phase of the WordPress release cycle. The field guide generally lists all the dev notes published during the beta cycle. This guide is linked in the about page of the corresponding version of WordPress, in the release post and in the HelpHub version page.!
WordPress 6.0 Field Guide – this brings together dev notesdev noteEach 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
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. related to the release
@sergeybiryukov: Build/Test Tools component: Two issues were fixed in the unit testunit testCode written to test a small piece of code or functionality within a larger application. Everything from themes to WordPress core have a series of unit tests. Also see regression. suite:
Pass GitHubGitHubGitHub is a website that offers online implementation of git repositories that can 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/ Actions environment variables to the Docker container, so that tests that should only run on trunktrunkA 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. don’t unintentionally run on other branches. See ticket #55668 for more details.
Update the test for supported versions in the SECURITY.md file so that major versions like 6.0 are handled correctly. See ticket #55667 for more details.
General: The Microsoft IIS configuration file was updated to account for WordPress coding standardsWordPress Coding StandardsA collection of PHP_CodeSniffer rules (sniffs) to validate code developed for WordPress. It ensures code quality and adherence to coding conventions, especially the official standards for WordPress Core.. Testing is welcome from anyone running their own local IIS server on Windows. See ticket #53377 for more details.Date/Time, I18Ni18nInternationalization, 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., Permalinks: No major news this week.
Other open floor items
From the release documentation team, if any component maintainers or committers are still working on dev notes for 6.0 or have not had chance to reply to @bph, please can you let her know.
WordCampWordCampWordCamps are casual, locally-organized conferences covering everything related to WordPress. They're one of the places where the WordPress community comes together to teach one another what they’ve learned throughout the year and share the joy. Learn more. Europe (WCEU) Contributor DayContributor DayContributor Days are standalone days, frequently held before or after WordCamps but they can also happen at any time. They are events where people get together to work on various areas of https://make.wordpress.org/ There are many teams that people can participate in, each with a different focus. https://2017.us.wordcamp.org/contributor-day/https://make.wordpress.org/support/handbook/getting-started/getting-started-at-a-contributor-day/. Core Tables, June 2, 2022 – @desrosj would you like to share anything on this today? We can share this in a future week.
You’re invited to the 6.0 RC 2 Release Party at 16:00 UTC on May 10, 2022 (click to add to your calendar). Meet in #core and be ready to wave hello, emoji reactReactReact is a JavaScript library that makes it easy to reason about, construct, and maintain stateless and stateful user interfaces. https://reactjs.org/., and help test. As always with releases, there’s a chance this time may change the day of depending on how things are progressing. If the time is changed, it will be communicated across channels (#core-editor, #6-0-release-leads, and in #core). Hope to see you there!
WordPress 6.0 makes it easier to lock blocks using the new controls modal. The release also includes two new settings to choose who can access this option and when.
BlockBlockBlock 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
The new canLockBlocks setting can disable the feature globally or conditionally. Example:
add_filter(
'block_editor_settings_all',
function( $settings, $context ) {
// Allow for the Editor role and above - https://wordpress.org/support/article/roles-and-capabilities/.
$settings['canLockBlocks'] = current_user_can( 'delete_others_posts' );
// Only enable for specific user(s).
$user = wp_get_current_user();
if ( in_array( $user->user_email, [ 'user@example.com' ], true ) ) {
$settings['canLockBlocks'] = false;
}
// Disable for posts/pages.
if ( $context->post && $context->post->post_type === 'page' ) {
$settings['canLockBlocks'] = false;
}
return $settings;
},
10,
2
);
Blocks
The lock property allows hide controls on a block type level. Example:
A powerful feature of the @wordpress/create-block package is the ability to create templates to allow customization of how a blockBlockBlock 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. is structured.
WordPress 6.0 introduces some new template variables to allow even more customization. Templates can now use the customScripts variable to create new entries in the scripts property of the package.json file and while it was already possible to define dependencies, it is now also possible to defined a list of development dependencies using the npmDevDependencies variable. In addition to these new template variables, the @wordpres/env package will automatically be added to the list of devDependences when the template uses the wpEnv template variable or if the —wp-env flag is passed as a command line argument.
WordPress 6.0 Release Candidate 1 (released on May 3, 2022). This was the hard string freeze for the 6.0 and branchbranchA 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". for the release.
3. Blogblog(versus network, site) posts of note to coreCoreCore is the set of software required to run WordPress. The Core Development Team builds WordPress.
Key links for 6.0 and updates from the squad will be in the agenda item 4, after these blog posts.
If you have any items for Open Floor, please add them in the comments below.
If you are a component maintainer and wish to raise a ticketticketCreated for both bug reports and feature development on the bug tracker. in dev chat or give an update, you can also add information in the comments section.
Could you help with writing the summary from dev chat for a future meeting? Comment below or message core team reps @marybaum and @audrasjb in the Core Slack channel.
Update on 5 May 2022: Updates to the @wordpress/create-block templating system and Block Locking Settings in WordPress 6.0dev notesdev noteEach 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
a description of how developers are supposed to work with that change.
Dev notes are published on Make/Core blog during the beta phase of WordPress release cycle. Publishing dev notes is particularly important when plugin/theme authors and WordPress developers need to be aware of those changes.In general, all dev notes are compiled into a Field Guide at the beginning of the release candidate phase. were added to the BlockBlockBlock is the abstract term used to describe units of markup that, composed together, form the content or layout of a webpage using the WordPress editor. The idea combines concepts of what in the past may have achieved with shortcodes, custom HTML, and embed discovery into a single consistent API and user experience. Editor section.
With the Release Candidaterelease candidateOne of the final stages in the version release cycle, this version signals the potential to be a final release to the public. Also see alpha (beta). 1 officially shipped, it’s time to explore the next major releasemajor releaseA release, identified by the first two numbers (3.6), which is the focus of a full release cycle and feature development. WordPress uses decimaling count for major release versions, so 2.8, 2.9, 3.0, and 3.1 are sequential and comparable in scope., WordPress 6.0. This release introduces Style variations, the Block Locking UIUIUser interface, various writing improvements, more design tools, new hooksHooksIn WordPress theme and development, hooks are functions that can be applied to an action or a Filter in WordPress. Actions are functions performed when a certain event occurs in WordPress. Filters allow you to modify certain functions. Arguments used to hook both filters and actions look the same., updated external libraries, and more! At a high level, there are 97 enhancements and feature requests, 131 bug fixes and 13 Gutenberg bug fixes, 23 other blessed tasks, which brings us to 251 Trac tickets in total.
The new performance team has been working hard to improve various parts of WordPress. A lot of queries have been optimized and some removed, cache improved, multiple translations of the same strings removed, just to mention a few.
Let’s take a deeper look at what to expect in 6.0.
Note: Note: some of the changes will require pluginPluginA 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-partyPluginA plugin is a piece of software containing a group of functions that can be added to a WordPress website. They can extend functionality or add new features to your WordPress websites. WordPress plugins are written in the PHP programming language and integrate seamlessly with WordPress. These can be free in the WordPress.org Plugin Directory https://wordpress.org/plugins/ or can be cost-based plugin from a third-party and theme authors to adapt or change their code. Please, read these Dev notesdev notedev noteEach 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
a description of how developers are supposed to work with that change.
Dev notes are published on Make/Core blog during the beta phase of WordPress release cycle. Publishing dev notes is particularly important when plugin/theme authors and WordPress developers need to be aware of those changes.In general, all dev notes are compiled into a Field Guide at the beginning of the release candidate phase.Each important change in WordPress CoreCoreCore is the set of software required to run WordPress. The Core Development Team builds WordPress. is documented in a developers note, (usually called dev note). Good dev notes generally include:
a description of the change;
the decision that led to this change
a description of how developers are supposed to work with that change.
Dev notes are published on Make/Core blogblog(versus network, site) during the betaBetaA pre-release of software that is given out to a large group of users to trial under real conditions. Beta versions have gone through alpha testing in-house and are generally fairly close in look, feel and function to the final product; however, design changes often occur as part of the process. phase of WordPress release cycle. Publishing dev notes is particularly important when plugin/theme authors and WordPress developers need to be aware of those changes.In general, all dev notes are compiled into a Field GuideField guideThe field guide is a type of blogpost published on Make/Core during the release candidate phase of the WordPress release cycle. The field guide generally lists all the dev notes published during the beta cycle. This guide is linked in the about page of the corresponding version of WordPress, in the release post and in the HelpHub version page. at the beginning of the release candidate phase. carefully to make sure your code is ready for WordPress 6.0 on May 24, 2022.
Accessibility
Along with performance, lots of work has focused on improving accessibility in various parts of the WordPress software.
The Block Editor updates bring new functionality, fixes, and more:
The ability to bundle multiple Style variations for block themes.
The option to create page content patterns that users can choose from to create their pages.
New ancestor property in block.json letting one restrict where users can place their blocks.
A new block locking UI with a lock attribute for every block.
Registration of blocks from within themes.
Improved support for preserving unrecognized content in the editor.
More robust block theme export feature in the Site Editor.
Block markup updates for image, quote, list, and group blocks.
New set of Post Comments blocks, No Results block, and more.
& more!
Of note, if you currently have the Gutenberg plugin active on your website and are upgrading to WordPress 6.0, please make sure Gutenberg is updated to its latest version. This helps ensure the best experience possible.
In WordPress 6.0 wp_cache_*_multiple API becomes a full CRUD. Also, option to flush the runtime cache without flushing the entire persistent cache is being enabled.
Taxonomies received a lot of performance improvements, from term query caching and adding limits to taxonomy queries, through navigation menu items to changing term_exists to use get_terms().
This new release offers a streamlined way for theme authors to work with patterns, support for multiple theme.json files AKA style variations, better export themes with Site Editor, and a few more goodies.
Allow block themes to be activated without index.php
This change removes the requirement for block themes to have an unused index.php template just for activation, as they use a templates/index.html file instead. (#54272)
Correct the logic for displaying a _doing_it_wrong() notice for add_theme_support( ‘html5’ )
Calling add_theme_support( 'html5' ) without passing an array of supported types should throw a _doing_it_wrong() notice: “You need to pass an array of types”.
If the second parameter is not specified, it should fall back to an array of comment-list, comment-form, and search-form for backward compatibility.
If the second parameter is not an array, the function should return false.
With 6.0 WordPress installs with more than 10,000 users, so called “large sites”, will receive performance improvements for querying and counting users.
Administration: Add a media_date_column_time filter to the media list table date column. Similar to the existing post_date_column_time filter in the posts list table, this change adds a new hook to filter the “Date” column output in the media list view. (#42942)
Build: Update webpack to v5.x. This aligns closer with how the Gutenberg plugin handles WordPress packages. Enable React Fast Refresh support to WordPress core for block development with @wordpress/scripts. Bring caniuse-lite to the latest version which ensures that build tools target the most recent version of browsers supported by WordPress. (#51750, see #55505)
Build/Test Tools:
A .git-blame-ignore-revs file has been added to the repository with a curated list of “pinking shear” commits (ones only applying stylistic changes), making the blame feature on GitHub much more useful (#55422)
Webpack and all related build processes/scripts have been updated to version 5 (#51750).
The npm install command has been fixed for contributors using an Apple M series silicone by updating the grunt-contrib-qunit dev dependency (#52690).
Bundled Theme: If you’ve been having problems with order of elements in comment form in Twenty Nineteen theme, there’s a good news for you in #46600. It’s fixed!
Canonical: Function redirect_guess_404_permalink() includes all public statuses, rather than just publish, in 404 redirects in its search. (#47911)
Comments: Speeding up Dashboard and Comment moderation SQL load – (#19901)
Emoji: Update the Twemoji to version 14.0.2. This version introduces support for the latest Emoji added in Emoji 14. (#55395)
Update jQuery Color to 2.2.0. Removes bundled version (still existed within core), in favor of expanding the Grunt build steps to include the package from NPM instead. (#55016)
Upgrade PHPMailer to version 6.5.4. The latest release includes some minor PHP cross-version improvements and a safeguard against hosters disabling security functions. Note to hosting providers: don’t disable escapeshellarg() and escapeshellcmd(); it’s not safe! Release notes: https://github.com/PHPMailer/PHPMailer/releases/tag/v6.5.4 (#55187)
Update sodium_compat to v1.17.1. The latest version of sodium_compat includes further improvements for PHP 8.1 compatibility. (#55453)
Update backbone from 1.4.0 to 1.4.1., underscore from 1.13.1 to 1.13.2, and clipboard from 2.0.8 to 2.0.10. (#55547)
Formatting:
Add support for formatting sizes as PB, EB, ZB, and YB. (#40875)
KSES: Add support for <ruby> and related elements. This is especially commonly used in Japanese content, but it can also been seen in content of other languages like Chinese. The set of elements to enable such functionality consists of <ruby>, <rt>, and <rp> in the HTML Standard, while some browsers (like Firefox) additionally support <rb> and <rtc> for more advanced formatting. (#54698)
KSES: Allow lang, xml:lang, dir attributes globally. Globally permit the lang, xml:lang, and dir attributes on all elements rather than a subset in accordance with the HTML specification. (#54699)
Function get_the_author_link() is going to be pluggable in WordPress 6.0. A new filter, get_the_author_link, is added for altering author link output. (#51859)
I18n:
List item separator should be a WP_Locale property (#39733)
Allow languages path in register_block_type (#54797)
Media:
Remove attachment_fields_to_save filter and deprecate image_attachment_fields_to_save(). This filter prevented removing attachment titles. This changeset removes the filter and deprecates the related function since it is no longer used. (#39108)
Enable edits to custom image sizes. With a new filter edit_custom_thumbnail_sizes users will be able to apply media edits to individual custom image sizes. (#28277)
Network/Sites: Improve cache key generation in WP_Site_Query (#55462)
Plugins:
Introduce the plugin_install_description filter. This allows for modification of the plugin card description on the Add Plugins screen. (#55480)
Convert apply_filters() into a proper variadic function. (#53218)
Posts, Post Types: Pass the $update parameter to wp_insert_post_data and wp_insert_attachment_data filters. This makes it easier to determine in a callback function whether this is an existing post being updated or not. (#46228)
Posts, Post Types; Taxonomy: Translate default labels once. Improve the translation of post type and taxonomy labels by caching the translations during runtime. (#26746)
Please, test your code. You can use the Beta Tester plugin on a test site to validate how your plugin or theme functions with WordPress 6.0 RC1. Fixing issues that your code has with WordPress core helps you and millions of WordPress sites.
Here are notes to a few further adjustments coming to WordPress 6.0 for developers.
Upgrade/Install
Replace a pluginPluginA 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 description on the Plugins > Add New Screen
The patchpatchA special text file that describes changes to code, by identifying the files and lines which are added, removed, and altered. It may also be referred to as a diff. A patch can be applied to a codebase for testing.#55480 introduces the plugin_install_descriptionfilterFilterFilters 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. in the WP_Plugins_Install_List_Table.
This new filter allows developers to modify or replace the description of a plugin on the Plugins > Add New and/orNetworknetwork(versus site, blog)Adminadmin(and super admin) > Plugins > Add New screens.
The following example shows how to replace the description of specific plugin:
</p>
function wporg_plugin_install_description( $description, $plugin_data ) {
if ( 'my-plugin' === $plugin_data['slug'] ) {
$description = esc_html__( 'A new description for My Plugin', 'textdomain' );
}
return $description;
}
add_filter( 'plugin_install_description', 'wporg_plugin_install_description', 10, 2 );
<p>
Add ability to filter whole notification email in retrieve_password
New WordPress release introduces two new hooksHooksIn 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. to help developers to filter retrieve password emails:
send_retrieve_password_email can be used to filter whether to send the retrieve password email;
retrieve_password_notification_email can be used to filter the contents of the reset password notification email sent to the user.
For consistency with some similar filters like send_password_change_email or send_email_change_email, and for more flexibility, pass $user_login and $user_data parameters directly to the new send_retrieve_password_email and retrieve_password_notification_email filters.
In large multisitemultisiteUsed 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 networks, the site icons added to the toolbar navigation in WordPress 5.8 could make pages load significantly slower. To remove these icons, use the wp_admin_bar_show_site_icons filter.
Without using the filter, these icons now include lazy loading when it is enabled for images. The loading attribute can be removed if it does not fit a site specifically in this context.
Updated 2022-05-07 with a table of content, two more dev notesdev noteEach 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
a description of how developers are supposed to work with that change.
Dev notes are published on Make/Core blog during the beta phase of WordPress release cycle. Publishing dev notes is particularly important when plugin/theme authors and WordPress developers need to be aware of those changes.In general, all dev notes are compiled into a Field Guide at the beginning of the release candidate phase. and some formatting –bph
Removed bottom margin on LineHeightControl component
Several UIUIUser interface components currently ship with styles that give them bottom margins. This can make it hard to use them in arbitrary layouts, where you want different amounts of gap or margin between components.
To better suit modern layout needs, we will gradually deprecate these bottom margins. A deprecation will begin with an opt-in period where you can choose to apply the new margin-free styles on a given component instance. Eventually in a future version, the margins will be completely removed.
In WordPress 6.0, the bottom margin on the LineHeightControl component has been deprecated. To start opting into the new margin-free styles, set the __nextHasNoMarginBottom prop to true:
Props to @0mirka00 for writing this dev notedev noteEach 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
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..(top)
Unrecognized blockBlockBlock 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. preservation
We’ve started making strides in preserving unrecognized content in the editor, also called (sometimes incorrectly) “invalidinvalidA resolution on the bug tracker (and generally common in software development, sometimes also notabug) that indicates the ticket is not a bug, is a support request, or is generally invalid.” or “missing.” In situations where the editor is unable to validate a loaded block against its implementation we run into numerous cases where content has previously been lost or corrupted, notably when inner blocks are involved.
Currently, we’re on the journey to preserving that original unrecognized content but have many corners in the project to update before it’s finished. Notably, when loading posts in the editor or in the code view that content will be preserved as it was loaded. Surprisingly, this lets us do something we’ve never been able to do before: intentionally create certain kinds of broken blocks within the code editor, or modify and fix blocks in the code editor whose block implementation is missing.
Still on the list to update are smaller parts of the flow such as the array of confusing block resolution dialogs and operations as well as certain validation steps that currently fail but shouldn’t.
In short, if you’ve been frustrated by the editor breaking your posts as soon as you hit “save” then good news is coming in 6.0.
Until WordPress 6.0, building blocks inside plugins was the only way possible if you wanted to use block.json. This remains to be the recommended way to build Custom blocks going forward. Blocks add functionality and therefore should be built as plugins that stay active even when a new theme is enabled.
There are however instances where the styling and functionality of a block is so tightly coupled with a theme that it doesn’t make sense to have a block active without a given theme. This is true when building custom solutions, and the blocks are site-specific and not used for other instances. Furthermore, from discussion with agency project managers and developers, it turns out that there are considerable deployment costs when separating comprehensive solutions.
Each implementation had to reinvent a way to register blocks within themes, as WordPress coreCoreCore is the set of software required to run WordPress. The Core Development Team builds WordPress. wouldn’t allow for it. With 6.0 the registration of blocks using block.json from within a theme is now technically standardized. You can use the same register_block_type function as you would inside a pluginPluginA 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 all the assets that you may register in the block.json file like the editorScript, style, etc get enqueued correctly.
Comments Query Loop: An advanced block that displays post comments and allows for various layouts and configurations.
Comment Template: Contains the block elements used to display a comment, such as the title, date, author, avatarAvatarAn avatar is an image or illustration that specifically refers to a character that represents an online user. It’s usually a square box that appears next to the user’s name. and more.
Comment Edit Link: Displays a link to edit the comment in the WordPress Dashboard. This link is only visible to users with the edit comment capability.
Comments Pagination: Displays next/previous links to paginated comments where this has been enabled in the comment settings in the WordPress adminadmin(and super admin)
Previous Page: Displays the link to the previous page of comments.
Page Numbers: Displays a list of page numbers for comments pagination.
Next Page: Displays the link to the next page of comments.
The legacy Post Comments block, which directly renders the comments.php file, has been deprecated and hidden. It will still work for themes currently using it, but it won’t appear in the inserter.
The new set of blocks provides almost the same functionalities with the benefit that the layout and styles can be customized from the Editor. However, if any user wants to re-enable the Post Comments legacy block, they can use the block registration filters and adapt it to their needs. For example, this piece of code shows the legacy block in the inserter again and removes the “deprecated” from the title:
Gallery block – Ability to adjust gap between images added
In order to implement this the spacing of the Gallery images had to be changed from a right margin setting to the CSSCSSCascading Style Sheets.gap property. Themes or plugins that use a right margin setting to manually adjust the Gallery image spacing may need to be updated to instead override the gap setting.
Default gap changed
The new block editor block gap support functionality has been used to implement this and this adds a default block gap of 0.5em. For some themes that don’t explicitly set this gap, the default will change from the previous 16px to 0.5em. If plugin or theme developers want to ensure that the 16px gap remains the following CSS can be added to the theme, or site custom CSS:
Some themes may have depended on the bottom margin set on the gallery images to provide a gap between two galleries. Because the gallery now uses the flex gap for spacing this bottom margin is no longer set. Themes that were relying on this unintended side effect of the image margins will need to add the following CSS in order to maintain a gap between galleries:
.wp-block-gallery {
margin-top: 16px;
}
Gallery gutter CSS var deprecated
To keep the naming of the gap setting consistent the --gallery-block--gutter-size CSS var has been deprecated and replaced with --wp--style--gallery-gap-default. --gallery-block--gutter-size will continue to work in release 6.0 and will be removed in 6.1.
Theme authors should be able to provide compatibility for WP 5.9 and 6.0+ with the following:
Block developers sometimes need to restrict where users can place their blocks. For that, developers already count on APIs like block.json‘s parent property or the allowedBlocks option of the useInnerBlocksProps hook that allowed developers to express some basic, direct parent-children relations between blocks.
Since WordPress 6.0, the ancestor property makes a block available inside the specified block types at any position of the ancestor block subtree. That allows, for example, to place a ‘Comment Content’ block inside a ‘Column’ block, as long as ‘Column’ is somewhere within a ‘Comment Template’ block. In comparison to the parent property, blocks that specify their ancestor can be placed anywhere in the subtree, while blocks with a specified parent need to be direct children.
This property admits an array of block types in string format, making the block require at least one of the types to be present as an ancestor.
Block developers can also combine parent with ancestor inside block.json and use them together to express more complex relations if needed. For example:
Parent [ 'A' ] and ancestor [ 'C' ] would work as ”parent A and ancestor C”.
Parent [ 'A', 'B' ] and ancestor [ 'C', 'D' ] would work as ”parent (A or B) and ancestor (C or D)”.
Note that there are some edge cases uncovered by this APIAPIAn 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., like blocks that would require two or more different ancestor types simultaneously.
Props to @darerodz for writing this dev note. (top)
Changes to media object returned from the WordPress data module
A small change has been made to the way the media objects are retrieved using the data module. The “caption”, “title” and “description” properties are returned as strings when using the `wp.data.select(‘core’).getRawEntityRecord` selector or the `wp.coreData.useEntityProp` hook.
Before
const [ renderedTitle ] = useEntityProp( 'root', 'media', id )?.rendered;
After
const [ renderedTitle ] = useEntityProp( 'root', 'media', id );
Some low-impact APIs that were deprecated on WordPress 5.4 have now been removed:
getReferenceByDistinctEdits selector.
PreserveScrollInReorder component.
dropZoneUIOnly prop in the MediaPlaceholder component.
isDismissable prop in the Modal component.
wp.data.plugins.control data module.
You can find more details on the #38564 removing these APIs
Slated to be removed in WordPress 6.2
The APIs listed have been deprecated in WordPress 5.3 and were forwarded in the background to the new ones already. They will be entirely removed in WordPress 6.2.