Focused crawls are collections of frequently-updated webcrawl data from narrow (as opposed to broad or wide) web crawls, often focused on a single domain or subdomain.
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.
With 6.1 well underway, here’s the initial schedule of 6.1 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. scrub sessions. These 6.1-specific ticketticketCreated for both bug reports and feature development on the bug tracker. scrubs will happen each week until the final release.
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. Scrubs:
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). Scrubs:
Check this schedule often, as it will change to reflect the latest information.
What about recurring component scrubs and triagetriageThe act of evaluating and sorting bug reports, in order to decide priority, severity, and other factors. sessions?
The above 6.1 scheduled bug scrubs are separate and in addition.
For your reference, here are some of the recurring sessions:
Design Scrub: Every Tuesday, 16:00 UTC, in the #design channel.
Have a recurring component scrub or triage session? PingPingThe act of sending a very small amount of data to an end point. Ping is used in computer science to illicit a response from a target server to test it’s connection. Ping is also a term used by Slack users to @ someone or send them a direct message (DM). Users might say something along the lines of “Ping me when the meeting starts.”@audrasjb or @chaion07 on SlackSlackSlack is a Collaborative Group Chat Platform https://slack.com/. The WordPress community has its own Slack Channel at https://make.wordpress.org/chat/. to have it added to this page.
Want to lead a bug scrub?
Did you know that anyone can lead a bug scrub at anytime? Yes, you can!
How? Ping @audrasjb or @chaion07 on slack and let us know the day and time you’re considering as well as the report or tickets you want to scrub.
Planning one that’s 6.1-focused? Awesome! It can be added to the schedule above. You’ll get well deserved props in the weekly Dev Chat, as well as in the #props Slack channel!
Where can you find tickets to scrub?
Report 5 provides a list of all open 6.1 tickets:
Use this list to focus on highest priority tickets first.
Use this list to focus on tickets that haven’t received love in a while.
Report 6 provides a list of open 6.1 tickets ordered by workflow.
Need a refresher on bug scrubs? Checkout Leading Bug Scrubs in the coreCoreCore is the set of software required to run WordPress. The Core Development Team builds WordPress. handbook.
Questions?
Have a question, concern, or suggestion? Want to lead a bug scrub? Please leave a comment or reach out directly to @audrasjb or @chaion07 on slack.
With WordPress 6.1 around the corner, this post brings together the many 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) improvements and fixes to look forward to that might be hard to discover amongst the details of 500+ bugs and enhancements. 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 SlackSlackSlack is a Collaborative Group Chat Platform https://slack.com/. The WordPress community has its own Slack Channel at https://make.wordpress.org/chat/. (need a slack account to view) 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.
Themes
Most notably, 6.1 will see the introduction of both Twenty Twenty-Two and Twenty Twenty-Three marked as accessibility ready, making them both the first default 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. themes to do so (and only default block themes). This helps open up more folks to the world of block themes and broader site editing features.
Across the many screens in WP Admin, improvements abound. Changes range from improvements in color contrast on the 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 screen during recovery mode, to a switch from a text input to a textarea field in the media library, so users are better able to see the content of the field while editing.
To better call attention to the many improvements to this form, this section has been pulled out of the WP Admin Screen section. While this is a lesser used interface, the accessibility improvements are quite significant for this release, addressing many longstanding problems. This includes proper labels for required fields, explicitly associating errors with input fields so folks know what actions to take where, improved labels for radio buttons, and more.
Even though the Site and Template editors both use blocks, there are some specific accessibility challenges for these new interfaces in a site editing world. More work is needed and, if you’re keen to help, please join the FSE Outreach Program where you can go through calls for testing to provide feedback, find bugs, and more.
The navigation block continues to be a powerful and complex block, especially in the world of block themes. While there are fallbacks and an improved menu management experience to look forward to in this release, there is also a nice set of accessibility related fixes to make this necessary block usable for more people in more situations.
General Block Editor (other blocks, writing flow, components, etc)
This section covers a wide range of items including everything from improvements to additional blocks, like a focus loss fix for the Table block, and larger improvements to functionality like the Tools Panel. Specifically, the Tools Panel helps power part of the experience of using the numerous design toolspresent in more blocks for this release. It’s what you’d interact with to interact with more tools or reset changes. Improving the accessibility of this single tool has a cascading impact by improving the experience everywhere it’s used.
Comments now include proper contextual attributes for autocomplete fields, proper labels for the visible text describing required fields, and improved accessibility (and translatability) of the logged in as link.
WordPress 6.1 includes an enhancementenhancementEnhancements are simple improvements to WordPress, such as the addition of a hook, a new feature, or an improvement to an existing feature. to the search controller, #56546, which makes it possible to retrieve a term or post object over the 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/. without knowing anything but that resource’s ID and object type.
get_post can retrieve a post of any post type so long as you know the post’s numeric ID, and get_term can retrieve a term from any taxonomyTaxonomyA taxonomy is a way to group things together. In WordPress, some common taxonomies are category, link, tag, or post format. https://codex.wordpress.org/Taxonomies#Default_Taxonomies.. Because REST objects are segregated by post type-specific endpoints, however, there has not been a clear way to get a Post with ID 78 if you don’t know whether it is a page, post, or my-cpt.
The coreCoreCore is the set of software required to run WordPress. The Core Development Team builds WordPress./search endpoint now supports ?include and ?exclude parameters which take a list of IDs, and limit results to posts matching those IDs.
Examples:
To get post 78 when you don’t know its post type,
/wp/v2/search?include=78
To get posts 78 and 79 only if they are in the page post type,
/wp/v2/search?include=78,79&subtype=page
To search posts excluding post 78,
/wp/v2/search?exclude=78
To get term 87,
/wp/v2/search?type=term&include=78
To get term 87 only if it is a categoryCategoryThe 'category' taxonomy lets you group posts / content together that share a common bond. Categories are pre-defined and broad ranging.,
The search endpoint supports the _embedmetaMetaMeta is a term that refers to the inside workings of a group. For us, this is the team that works on internal WordPress sites like WordCamp Central and Make WordPress. parameter, so developers can therefore use the search endpoint to retrieve a full post or term response object in one request knowing only those object’s IDs.
As an example of how this could be used, imagine a custom 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. which relates to a specific post. As of WordPress 6.1 developers can implement that block knowing only the related post’s ID, and could then create a hook to search for that post by ID and retrieve it using the Block Editor’s existing entity system:
/**
* Dictionary of requested items: keep an in-memory list of the type (if known)
* for each requested ID, to limit unnecessary API requests.
*/
const typeById = {};
/**
* Query for a post entity resource without knowing its post type.
*
* @param {number} id Numeric ID of a post resource of unknown subtype.
* @returns {object|undefined} The requested post object, if found and loaded.
*/
function usePostById( id ) {
const type = typeById[ id ];
useEffect( function() {
if ( ! id || typeById[ id ] ) {
return;
}
apiFetch( {
path: `/wp/v2/search?type=post&include=${ id }&_fields=id,subtype`,
} ).then( ( result ) => {
if ( result.length ) {
typeById[ id ] = result[0].subtype;
}
} );
}, [ id ] );
return useSelect( function( select ) {
if ( ! id || ! type ) {
return undefined;
}
return select( 'core' ).getEntityRecord( 'postType', type, id );
}, [ id, type ] );
}
Pretty-printing REST endpoint JSONJSONJSON, 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. responses
WordPress 6.1 also introduces support for returning pre-formatted JSON from the REST API. #41998 lets developers request formatted JSON using a new _pretty query parameter or a filterFilterFilters 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., particularly useful when querying via curl or other tools which do not provide an option to format responses.
To format the JSON returned from a specific endpoint request, append the ?_pretty query parameter to the endpoint URLURLA specific web address of a website or web page on the Internet, such as a website’s URL www.wordpress.org.
To instruct WordPress to pretty-print all REST response bodies, a developer can use the rest_json_encode_options filter:
@adamsilverstein: Committed two small fixes related to the existing `image_editor_output_format` filterFilterFilters 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. – #54476 and #56442
@mukesh27: Added checkbox to Settings > Media to control whether to generate JPEG in addition to WebP in #537
@flixos90: This is unlikely to ever make it into coreCoreCore is the set of software required to run WordPress. The Core Development Team builds WordPress., but it is useful in the 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 to test either of the two behaviors
@ankitgade: Continuing to work on background processing infrastructure
@spacedmonkey: Published and helped with several 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. for 6.1:
@spacedmonkey: Also merged https://github.com/WordPress/wordpress-develop/pull/3424 and https://github.com/WordPress/wordpress-develop/pull/3403 and need code review for https://github.com/WordPress/wordpress-develop/commit/832b6c35f36d5f1ca84feadc49b0e5424af0ad6c, which will add a new function to core called wp_cache_supports to allow object caches to support different functionality
@spacedmonkey: Been investigating the performance regression seen in Beta 2, particularly new caching issues in block themes – see https://github.com/WordPress/gutenberg/issues/44772 for details. PR in the works https://github.com/WordPress/wordpress-develop/pull/3418 that needs review ASAP before the RC1 cutoff.
We’re seeking 1-2 POCs for this group; if you’re interested, please comment here or pingPingThe act of sending a very small amount of data to an end point. Ping is used in computer science to illicit a response from a target server to test it’s connection. Ping is also a term used by Slack users to @ someone or send them a direct message (DM). Users might say something along the lines of “Ping me when the meeting starts.” in SlackSlackSlack is a Collaborative Group Chat Platform https://slack.com/. The WordPress community has its own Slack Channel at https://make.wordpress.org/chat/.
@shetheliving: Dev note for new Site Health checks has been published: https://make.wordpress.org/core/2022/10/06/new-cache-site-health-checks-in-wordpress-6-1/
JavaScriptJavaScriptJavaScript or JS is an object-oriented computer programming language commonly used to create interactive effects within web browsers. WordPress makes extensive use of JS for a better user experience. While PHP is executed on the server, JS executes within a user’s browser. https://www.javascript.com/.
@flixos90: Our next release, 1.6.0, will be this coming Monday, October 17. Any feature or enhancementenhancementEnhancements are simple improvements to WordPress, such as the addition of a hook, a new feature, or an improvement to an existing feature. that you want to include in this release should be completed and merged by tomorrow (Wednesday, October 12, see #548).
@flixos90: Three proposed changes that have come up in recent weeks to align focus areas. First is to introduce a new Database focus area; there are several module proposals (SQLite, optimized autoloaded options, database health checks) and some core optimizations that would also fit into this
@spacedmonkey: Should Object Caching and Database be the same?
@flixos90: Don’t think so, some are pure database optimizations while sometimes object caching works around DB requests. I’d say adding caching around DB queries is still “Object Caching,” but there’s also room to improve some queries themselves and other DB issues
@flixos90: Second: We have a JSJSJavaScript, a web scripting language typically executed in the browser. Often used for advanced user interfaces and behaviors. focus, but there’s also a lot of work going on in 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/ to improve CSSCSSCascading Style Sheets. loading. Should we introduce a CSS area, or alternatively broaden the existing focus to be Assets (including CSS & JS)?
@shetheliving: Makes sense to me to broaden JS to both unless we have someone who is really interested in leading CSS
@spacedmonkey: Think they should be separate; if no one leads CSS, then it is not a “focus”
@shetheliving: That’s not entirely true; there’s some maintenance around designating something as a “focus,” e.g. having it on our weekly agenda, GH labels, updating the CODEOWNERS file, etc.
@olliejones: Is the scope of the JS focus intended to cover ReactReactReact is a JavaScript library that makes it easy to reason about, construct, and maintain stateless and stateful user interfaces. https://reactjs.org/. apps and XHR/fetch performance?
@flixos90: FWIW the JS focus has barely made any updates here since it was established, but it’s a noticeable aspect of performance and some projects have been kicked off so would not want to remove it; @aristath has been quite involved with CSS though
@spacedmonkey: What does the JS focus mean right now?
@adamsilverstein: We do have some work around enabling better loading strategies for scripts that falls under JavaScript; I’ve been working on researching the benefits of using defer
@flixos90: Generally most of our focus is on website front-end performance, so the JS focus is also focused on front-end – things like deferring scripts, not loading JS that isn’t used, etc.
@flixos90: Don’t think that would make sense, since everything we do is about front-end. Even DB queries and object caching improvements affect the front-end a lot. Let’s discuss later.
@flixos90: Last one: Suggest removing the Site Health focus – not because we shouldn’t work on Site Health, but more because any Site Health check actually fits into other areas and would be better suited as part of the other focus areas as opposed to it’s own area. There has not been a focus lead for Site Health, which is maybe another indicator that we should retire this area and consider checks to be part of other focus areas moving forward.
@spacedmonkey: So like an object caching-related Site Health check would be part of the Object Caching focus, right? Yes
WordPress 6.1 introduces a number of important performance improvements which will have impact in all aspects. The most significant improvements are done in caching WP_Query as well as REST APIREST 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/..
Improvements to WP_Query
Database queries in WP_Query being cached is a long wanted feature for many developers and finally a dream come true in WordPress 6.1. A couple of new functions will ensure that users cache and linked objects for menu items are now primed while get_page_by_title function will from now on use WP_Query and take the full advantage of all these improvements.
TracTracAn open source project by Edgewall Software that serves as a bug tracker and project management tool for WordPress. tickets holding these changes: #22176, #55716, #55620, #36905.
Improvements to REST API
Priming caches in a single query will significantly improve Posts controller with several new helper functions but that’s not all. User and comments controller will benefit in a similar way while taxonomyTaxonomyA taxonomy is a way to group things together. In WordPress, some common taxonomies are category, link, tag, or post format. https://codex.wordpress.org/Taxonomies#Default_Taxonomies. and post type controllers are now going to prepare_links only when needed. This control over prepare_links method will be available for custom controllers as well.
WordPress 6.1 will have two new Site Health checks – Persistent Object Cache and Page Cache, along with a number of new filters. Find out more in dedicated Dev notedev 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..
Trac tickets holding these changes: #56040, #56041.
Improvements to 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
In WordPress 6.1 the networknetwork(versus site, blog) options functions have been updated to be consistent with other metadata types, support for register_meta is added, prime caching network options in a single query, string main site ID in network options and more.
Trac tickets holding these changes: #37181, #55802.
Bootstrap/Load
The order of action 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. is slightly changed in order to gain more control over caching behavior, preloading assets and conditionally executing redirects.
Trac ticketticketCreated for both bug reports and feature development on the bug tracker. holding these changes: #56068.
Improvements to Cache 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.
Cache API improvements bring validating cache keys in WP_Object_Cache methods, deleting cache by group and making a number of private cache priming functions public, and thus, available for usage in plugins and themes.
A valid cache key must be either an integer number or a non-empty string. This will prevent silent failing in wp_cache_*() functions, done by a quick type check and adding a _doing_it_wrong() message if the string is empty, false, or null. Also, a check in update_user_caches() and clean_user_cache() will make sure that the email is not empty before being cached or removed from cache. Read more in #56198.
Several private cache priming functions for various object types are now public and 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 theme authors are encouraged to use these functions to improve the performance of their code by reducing the number of database queries. These functions are:
If you wanted to delete cached item with wp_cache_delete you had to specify the item’s ID, or you had to flush the entire cache with wp_cache_flush. WordPress 6.1 introduces a new plugable function called wp_cache_flush_group which removes all cache items in a group, if the object cache implementation supports it.
Introducing wp_cache_supports() function
Developers can now detect if their current implementation of an object cache supports flushing by group, by calling wp_cache_supports( $feature ) which returns true if the feature is supported. Third-party object cache plugins can declare a wp_cache_supports() function and correctly list their supported features:
add_multiple
set_multiple
get_multiple
delete_multiple
flush_runtime
flush_group
Note: The wp_cache_supports() function replaces and supersedes the wp_cache_supports_group_flush() function added in #4476.
WordPress 6.1 will add decoding="async" to image attributes, along with new wp_img_tag_add_decoding_attr() function and wp_img_tag_add_decoding_attrfilterFilterFilters are one of the two types of Hooks https://codex.wordpress.org/Plugin_API/Hooks. They provide a way for functions to modify data of other functions. They are the counterpart to Actions. Unlike Actions, filters are meant to work in an isolated manner, and should never have side effects such as affecting global variables and output.. Read more in #53232.
Query-attachments AJAX endpoint now caches the parent post objects. Read more in #56037.
WP_Media_List_Table class will call update_post_parent_caches function in order to prime parent caches in a single database request. Read more in #56036.
Added caching to wp_count_attachments() for better consistency with wp_count_posts(). Read more in #55227.
Avoid duplicated query when retrieving empty posts collections. Read more in #55677.
Post, Post Types improvements
In WordPress 6.1 WP_Posts_List_Table class will call update_post_author_caches function in order to prime post author caches in a single database request. Read more in #56100.
A new filter post_class_taxonomies will allow developers to reduce the number of taxonomies for which classes term classes are generated. Read more in #37114.
Sites running persistent object caching will have result of database queries in _find_post_by_old_slug and _find_post_by_old_date functions, cached. Read more in #36723.
Editor
Additional build task copy:block-json will convert and store all block.json files in a single blocks-json.php which will prevent all of this from happening for every 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. on each page load.
Identifiers (such as Table and Field names) are escaped with the %i placeholder which will prevent SQL Injection Vulnerabilities and provide a small performance improvement.
Performance of WP_List_Table::get_column_info() is improved by adding the primary column to the cached headerHeaderThe header of your site is typically the first thing people will experience. The masthead or header art located across the top of your page is part of the look and feel of your website. It can influence a visitor’s opinion about your content and you/ your organization’s brand. It may also look different on different screen sizes. values (#34564).
Cron API
In 6.1 wp-cron will be non-blocking for LiteSpeed LSAPI (#54668).
Taxonomy
Retain default term option when unregistering taxonomies and adjustments to handling default terms for custom taxonomies (#54472).
Themes
Two new actions are wrapping the process of loading a template file (load_template) – wp_before_load_template and wp_after_load_template (#54541).
Script loader
New filter wp_preload_resources enables resource preloading with rel='preload' (#42438).
Users
Prime user metaMetaMeta is a term that refers to the inside workings of a group. For us, this is the team that works on internal WordPress sites like WordCamp Central and Make WordPress. in WP_User_Query (#55594).
For WordPress 6.1, there was a concerted effort to add design tools consistently to blocks, via 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. support and make them available via Inspector Controls and for themes in theme.jsonJSONJSON, 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. file.
In this post, you will find a roster for quick reference showing which block has which controls.
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.
–
–
✅
✅
–
✅
Button
✅
✅
✅
✅
–
–
Buttons
✅
–
✅
–
✅
–
Calendar
✅
✅
–
–
–
–
Categories
✅
–
✅
–
–
–
Code
✅
✅
✅
✅
–
–
Column
✅
✅
✅
✅
✅
–
Columns
✅
✅
✅
✅
✅
–
Comment Author Avatar
–
✅
✅
✅
–
–
Comment Author Name
✅
✅
✅
–
–
–
Comment Content
✅
✅
✅
–
–
–
Comment Date
✅
✅
✅
–
–
–
Comment Edit Link
✅
✅
✅
–
–
–
Comment Reply Link
✅
✅
✅
–
–
–
Comment Template
✅
–
–
–
–
–
Comments
✅
✅
–
–
–
Comments Pagination
✅
✅
–
–
✅
–
Comments Pagination Next
✅
✅
–
–
–
–
Comments Pagination Numbers
✅
✅
–
–
–
–
Comments Pagination Previous
✅
✅
–
–
–
–
Comments Title
✅
✅
✅
✅
–
–
Cover
✅
–
✅
–
–
✅
Embed
⏳
–
–
–
–
–
File
–
–
–
–
–
–
Gallery
⏳
✅
✅
✅
–
Group
✅
✅
✅
✅
✅
–
Heading
✅
✅
✅
✅
–
–
Home Link – Navigation
✅
–
–
–
–
–
HTMLHTMLHyperText Markup Language. The semantic scripting language primarily used for outputting content in web browsers.
Post ExcerptExcerptAn excerpt is the description of the blog post or page that will by default show on the blog archive page, in search results (SERPs), and on social media. With an SEO plugin, the excerpt may also be in that plugin’s metabox.
✅
✅
✅
–
–
–
Post Featured ImageFeatured imageA featured image is the main image used on your blog archive page and is pulled when the post or page is shared on social media. The image can be used to display in widget areas on your site or in a summary list of posts.
WordPress 6.1 brings a number of 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. and functions, which developers should be aware of.
New functions
is_term_publicly_viewable()
TaxonomyTaxonomyA taxonomy is a way to group things together. In WordPress, some common taxonomies are category, link, tag, or post format. https://codex.wordpress.org/Taxonomies#Default_Taxonomies. component gets counterpart to the is_post_publicly_viewable() in a form of is_term_publicly_viewable() function. It will centralise and reduce the logic needed to validate a term and determine if it’s publicly viewable.
Another counterpart comes to Plugins component: did_filter() retrieves the number of times a filterFilterFilters 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. has been applied during the current request, bringing parity with did_action().
Allow to wrap settings sections with custom HTMLHTMLHyperText Markup Language. The semantic scripting language primarily used for outputting content in web browsers. in add_settings_section()
WP 6.1 improves the add_settings_section() function to allow developers to pass extra HTML mark-up to be rendered before and after the settings section. Extra argument $args can now be passed to the function, and is an array that can contain the following items:
before_section: HTML content to prepend to the section’s HTML output. Receives the section’s class name provided with the section_class argument via an optional %s placeholder. Default empty.
after_section: HTML content to append to the section’s HTML output. Default empty.
section_class: The class name to use for the section. Used by before_section if a %s placeholder is present. Default empty.
The HTML passed using these extra arguments is escaped using wp_kses_post() just before rendering. This changeset also provides a set of unit tests for this new feature.
Next to wp_read_image_metadata (added 15 years ago) and wp_read_video_metadata (added 5 years ago), Media component gets another metadata hook, wp_read_audio_metadata, which will allow filtering data extracted from uploaded audio file. Read more in #55828.
pre_option
Although a pre_option_{$option} filter already exists, this change adds a more general pre_option filter that will run on every get_option call. This brings the control flow into similar flow as update_option. Read more in #37930.
ajax_term_search_results
Taxonomy component get another addition in ajax_term_search_results hook, which can be used to filter the term search results returned by the AJAX term query. Read more in #55606.
get_header_image
Themes that support HeaderHeaderThe 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. Image feature can now modify header image URLURLA specific web address of a website or web page on the Internet, such as a website’s URL www.wordpress.org returned by get_header_image() using the new get_header_image filter. Read more in #56180.
wp_list_table_class_name
As list tables are very widely used by extenders, a new filter wp_list_table_class_name will allow them to modify the list table returned for custom screens. Next to this, the private delegation is removed from the following classes and function:
On the login page, the “Register” link for new users has been filterable for some time. Now, with lost_password_html_link hook, we have the ability to filter the “Lost your password?” link as well. Read more in #55388.
New filters in Users component allow conditional suppression of the email notifications that are sent when a new user account is registered. Read more in #54874.
Pass $action to nonce_life filter
WP 6.1 contextualizes the usage of nonce_life filter by passing the $action parameter. It allows to alterate the default lifespan of nonces on a case by case basis. Read more in #35188.
New filters for wp_list_authors()and wp_list_users()
The following three filters allow to customize the wp_list_authors() and wp_list_users() output:
wp_list_authors_args: Filters the query arguments for the list of all authors of the site.
pre_wp_list_authors_post_counts_query: Filters whether to short-circuit performing the query for author post counts. This may be useful to account for custom post types or post statuses.
wp_list_users_args: Filters the query arguments for the list of all users of the site.
New set of fine-grained filters for the feed_links() function
The previously available set of filters in the feed_links() function to enable or disable display of various feed links was quite limited:
feed_links_show_posts_feed to control the main feed
feed_links_show_comments_feed to control both the global comments feed and the comment feed for singular posts.
In order to disable the other feeds (post type archive, categoryCategoryThe 'category' taxonomy lets you group posts / content together that share a common bond. Categories are pre-defined and broad ranging., tagtagA 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.), custom taxonomy, author archive, search results), one would have to unhook feed_links_extra() from wp_head, but that would completely remove all of those feeds, as well as the single post comments feed.
To allow for more flexibility, this commit introduces a full set of filters in the feed_links_extra() function to control each one of the feeds independently, including a way to enable/disable the single post comments feed when the global comments feed is disabled/enabled:
feed_links_extra_show_post_comments_feed
feed_links_extra_show_post_type_archive_feed
feed_links_extra_show_category_feed
feed_links_extra_show_tag_feed
feed_links_extra_show_tax_feed
feed_links_extra_show_author_feed
feed_links_extra_show_search_feed
All of them default to true, except for feed_links_extra_show_post_comments_feed which defaults to the result of feed_links_show_comments_feed to ensure backward compatibility.
Ability to filter arguments to the_posts_pagination()
A new the_posts_pagination_args filter has been added that allows developers to modify the arguments passed to the_posts_pagination().
A typical case where this new filter can be helpful is creating a child themeChild themeA 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/.. Suppose a template in a parent theme contains something like (such as in Twentyseventeen) :
When the author of a child theme wants to use something other than the parent theme’s SVGs for the next/previous links, for example, simple text links so that they can style them similar to other next/previous that are used in the child theme.
Prior to WordPress 6.1, child theme authors needed to copy the parent theme’s template into their child theme and change the arguments passed to the_posts_pagination().
With this new filter, child theme authors can simply do:
Pocket Casts is a podcast player with apps for several platforms. The oEmbed 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. provides rich HTML to embed any audio or video episode onto a website. URLs on the pca.st domain can now be embedded automatically.
Thanks to @audrasjb,@pbiron, and @peterwilsoncc for contributing to 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..
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 October 3 and October 10, 2022.
75 commits
120 contributors
66 tickets created
6 tickets reopened
113 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.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
Administration
Avoid menu/sub-menu overlap on small screens – #32747
Guard against undefined $GLOBALS['hook_suffix'] in WP_Screen::get() – #49089
Remove private delegation from list tables – #18449
Build/Test Tools
Add missing newline character on unit tests files after [54443] – #56611
Add tests coverage for _wp_check_alternate_file_names() – #55199
Add tests for WP_List_Util::pluck and WP_List_Util::sort – #55300
Add tests for wp_nonce_field() and wp_referer_field() – #55578
Display PHPCSPHP Code SnifferPHP Code Sniffer, a popular tool for analyzing code quality. The WordPress Coding Standards rely on PHPCS. results in the GitHubGitHubGitHub is a website that offers online implementation of git repositories that can easily be shared, copied and modified by other developers. Public repositories are free to host, private repositories require a paid subscription. GitHub introduced the concept of the ‘pull request’ where code changes done in branches by contributors can be reviewed and discussed before being merged be the repository owner. https://github.com/ Action logs – #55652
Note the versions of NodeJS and npm supported – #55903
Remove PHPPHPThe web scripting language in which WordPress is primarily architected. WordPress requires PHP 5.6.20 or higher 8.1 and 8.2 from allowed failures – #55652, #55656, #56009, #56681
Update github-script action to the latest version – #55652
Update npm dependencies to their latest versions – #56641
Use require_once instead of require – #56738, #56179
Add wp_cache_*_multiple() functions to Memcached implementation used in the test suite – #54864
Add comments to clarify a 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/. test for password protected posts – #56681
Bring some consistency to WP_Image_Editor_GD and WP_Image_Editor_Imagick tests – #55652
Clean up test image for site icon in Tests_REST_Server on teardown – #55652
Clean up test images in WP_Customize_Manager tests – #55652
Ignore EOL differences in Style Engine 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. tests – #56467, #55652
Minimize file copying in WP_REST_Attachments_Controller tests – #55652
Remove unnecessary file copying in WP_Customize_Manager tests – #55652
Replace some occurrences of assertEquals() with assertSame() – #55654
Use assertSame() in some WP_Theme_JSON tests – #55654
Twenty Nineteen: Ensure Pullquote 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. text color is reflected on front-end – #55981
Twenty Seventeen: Prevent scaling issues on featured images using Safari on iPadOS – #48195
Twenty Seventeen: Update the scrollTo jQuery 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 – #56702
Twenty Sixteen: Improve Pullquote Block text color consistency between editor and front-end – #56008
Twenty Twenty-Three: Bug fixes and improvements for 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 – #56383
Correct default values in wp_handle_comment_submission() – #56712, #56681, #55656
Coding Standards
Correct alignment in test_import_theme_starter_content() – #55652
Customize
Prevent PHP notice 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. when using block theme – #54888, #54905
Database
Correct MariaDB version check in wpdb::has_cap() – #54841
Docs
Correct docblocks for get_block_file_template() – #55929
Improve wp_get_object_terms() return type – #56327, #55646
Various docblockdocblock(phpdoc, xref, inline docs) fixes in WP_Rewrite class, as per documentation standards – #55646
Various docblock fixes in WP_Theme_JSON class, as per documentation standards – #55646
Various docblock fixes in global-styles-and-settings.php, as per documentation standards – #55646
Editor
Add PHPUnit tests for 5.9.0 new functions – #56266
Avoid extra calls to realpath() in block scripts and styles registration – #56758
cite styles declared via theme.jsonJSONJSON, 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. not working – #56467
Add a default font-style value for Adminbar links – #56737
Remove instances of _wp_http_referer from GET forms in the adminadmin(and super admin) – #54106
Login and Registration
Rename is_login_screen() function to is_login() – #19898, #56400
Media
Ensure the wp_editor_set_qualityfilterFilterFilters 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. consistently passes the correct output mime type – #56442
Improve image engine detection when using the output format filter – #54476
When forms contain multiple required fields, their labels might have an asterisk with a legend to explain that those fields are required. To reduce code duplication and to help maintain globally consistent markup, WordPress has two new functions: wp_required_field_indicator() and wp_required_field_message(). Themes and plugins could employ these functions, too, if they require at least WordPress 6.1.
Labels for required fields use the wp_required_field_indicator() function, which gives a symbol wrapped in a spantagtagA 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.) with the “required” class. Translators can now replace the asterisk with a more appropriate glyph in their language.
For the legend, wp_required_field_message() wraps “Required fields are marked *” in a span element as well, with the “required-field-message” class. The symbol matches the markup produced by the wp_required_field_indicator() function.
In WordPress 5.9 and 6.0, screen readers would not read the asterisks or the required fields message text of the comments form because they are visual cues. In 6.1, a revision restores these items so screen reader users who see the text also hear it.
Filtering markup
Both of these functions have 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 edit their output, and the filterFilterFilters 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. names match the related function.
Indicator example
If the language keeps the single asterisk, but that already means something else on a site, the filter could add more stars:
Replace the space before the indicator in the message with a non-breaking space so the symbol does not wrap to the next line, separated from the rest of the message.
WordPress 6.1 brings considerable more flexibility to the layout controls and features 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. A new layout type, “constrained”, was added to the already available Flow and Flex layouts types. In addition, layout refactor efforts bring new layout styles, new block level spacing, more semantic class name for layouts, root padding and a method to disable all layout styles all together for themes.
New “constrained” layout type
The new “constrained” layout type has been split out from the “flow” layout. This means that the “flow” now corresponds only to the base layout configuration. This change moves the content width logic to a new layout type, called “constrained” which makes it easier to set blocks to use content width by default.
What styles does each layout type output?
Flow layout
Spacing between child blocks with margin-block-start, margin-block-end;
Left, right and center alignments for child blocks.
Constrained layout
Spacing between child blocks with margin-block-start, margin-block-end;
Left, right and center alignments for child blocks;
Width constraints for child blocks (based on settings > layout > contentSize and settings > layout > wideSize from theme.jsonJSONJSON, 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.);
Base flex display rules, defaulting to a horizontal orientation;
Spacing between child blocks with gap;
Optionally, left/right/center/space-between justification and horizontal/vertical orientation.
Layout block support refactor
In 6.1, the Layout block support, which powers layout styles for blocks such as Group, Buttons, Social icons, and Columns, has been refactored. Prior to this release, the layout block support would output layout styles at render time for each, and every instance of a block stored in post content or in templates, resulting in redundant styles being output on a site’s frontend as reported in this Gutenberg issue #41434.
To address this, the refactor added the concept of base layout styles by storing a set of layout definitions in the coreCoreCore is the set of software required to run WordPress. The Core Development Team builds WordPress. WordPress theme.json file, that contain the default rules for each of the current layout types. These base layout styles are attached to each of the layout types via a semantic class name with the prefix is-layout-, resulting in the following class name-based rules:
is-layout-flow (base layout rules associated with the Flow layout used in the Group and other container block)
is-layout-constrained (base layout rules associated with the Constrained layout type used in Group and other container blocks that set content and wide sizes)
is-layout-flex (base layout rules associated with the Flex layout type, used in the Buttons, Social Icons, and Columns blocks)
Now, when a block that uses the layout support is rendered, one of the above class names will be injected into the block’s output, attaching the base layout styles to that block. The result is that the layout support will now only output a wp-container-123 classname (where 123 is a semi-random number), and associated styles when a block uses non-default layout attributes. This means a substantial reduction in redundant CSSCSSCascading Style Sheets. rules for posts or pages containing many Group blocks using the default layout settings.
In addition, when the Layout support outputs the wp-container-123 rules, they are enqueued via the newly added style engine functions, so that all the rules are grouped together in the one styletagtagA 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 output. This further tidies up the CSS output.
Block spacing enabled at the block level in theme.json
A byproduct of the layout refactor is that blockGap can now be set at the block level in theme.json and via the global styles UIUIUser interface, as gap styles are now also output via the above layout type class names, using direct CSS values, instead of the blockGap CSS variable --wp--style--block-gap. For backwards compatibility with themes and blocks that rely on the CSS variable, the value defined for the root styles.spacing.blockGap style is also output as a CSS property.
Note: The Gallery block currently does not support blockGap styles in theme.json as it relies on an ad-hoc approach to gap spacing to factor in widths of the image blocks.
Semantic class names in Layout support
Since WordPress 6.0, the Layout support outputs semantic class names for the layout properties orientation, justifyContent, and flexWrap, resulting in class names such as is-vertical, is-content-justification-left, and is-nowrap.
With the changes in WordPress 6.1, combined with layout type-based class names, it is now possible to target a particular configuration of the Group block, e.g., the Stack variation via a rule such as .wp-block-group.is-layout-flex.is-vertical.
These semantic class names are only output for Layout properties that have been explicitly set.
Root padding
By default, root padding, which can be set in Styles > Layout > Padding, is applied to the outermost wrapper element. On the front end that’s wp-site-blocks; in the editor it’s editor-styles-wrapper.
The problem with this approach is that it doesn’t allow for blocks to expand to full viewport width.
useRootPaddingAwareAlignments changes where left and right padding are applied, so that blocks set to full width can actually span the full viewport width.
How does it work?
Instead of the wrapper, left and right padding are added to the outermost container block that has a constrained layout set. Then, negative margins of the same value are added to any full width children of that block. Additionally, non-full width children of those full width blocks will also have left and right padding applied to them. This is so that the contents of a full width container block don’t bump against the sides of the viewport.
To enable this setting, in theme.json, add "useRootPaddingAwareAlignments": true inside the settings object.
By default, WordPress outputs structural layout styles for blocks such as Group, Columns, Social icons and Buttons, as part of the layout block support. Until this point, some themes have been opting out of the generated base layout styles by using an undocumented approach of overriding or removing the render_layout_support_flag callback on the render_block filter.
In WordPress 6.1, base layout styles have been consolidated as part of global styles output, so the existing approach of opting out of generated layout styles will no longer work. In its place, themes can now use a new theme support flag, called disable-layout-styles. Themes can opt-in to this feature using the following code:
// Opt in to remove layout styles.
add_theme_support( 'disable-layout-styles' );
Using this new theme support flag ensures that the expected behavior is handled explicitly in code. It also allows themes that use this flag to still make use of semantic class names that are injected into layout blocks at render time, such as content justification classes.
Note: Opting into this feature will remove required styles for blocks such as Group, Columns, Social icons and Buttons, so themes that use this feature will need to supply their own structural layout styles in order for these blocks to render correctly in the editor and on the site’s frontend. In most cases, particularly for blocks-based themes, the generated layout styles are preferable for ensuring the correct rendering of core blocks. For themes that are looking to adjust block spacing, view the handbook entry for “What is blockGap and how can I use it?”.
For more detail: Documentation > Block Editor > Explanation > Architecture > Layout styles
Proposals for Interop 2023 focus areas are open and can be submitted as a GitHub issue until October 15, 2022.
What is Interop?
Interop is an effort to improve interoperability across the three major web browser engines (Chromium, WebKit and Gecko) in important areas as identified by web developers. This work provides a benchmark – agreed on by representatives of three major browsers and developed through a process of public nomination – and identifies focus areas to be scored according to their pass rate on selected relevant tests.
The scale of WordPress and the wide variety of use cases we support puts WordPress developers in a unique position to contribute to and benefit from this effort. In the past, WordPress has helped identify and adopt important features like `srcset` and native lazy loading, and Interop gives us an opportunity to contribute feedback directly to browser developers.
The Interop 2022 work has already made great progress and the effort has begun to identify issues for Interop 2023. What browser interoperability issues continue to present problems for WordPress developers? You can make suggestions to the Interop 2023 project directly by opening a GitHub issue.
Suggestions can include features that have inconsistent behaviors across browsers or features that aren’t available in all browsers. When formulating proposals, keep in mind that the goal of the project is about improving interoperability between browsers rather than identifying new features.
What potential features in WordPress are blocked by cross-browser compatibility issues? We can help make browsers better by submitting these issues!