Grid layout type

The grid layout type for blocks has been in core since 6.3 but 6.6 adds some new features to it:

Toggle between grid modes

Adding grid layout to a block.json without specifying any further attributes, like so:

"layout": {
    "default": {
        "type": "grid"
    }
}

will now by default display a toggle in the blockBlock Block is the abstract term used to describe units of markup that, composed together, form the content or layout of a webpage using the WordPress editor. The idea combines concepts of what in the past may have achieved with shortcodes, custom HTML, and embed discovery into a single consistent API and user experience. sidebarSidebar A sidebar in WordPress is referred to a widget-ready area used by WordPress themes to display information that is not a part of the main content. It is not always a vertical column on the side. It can be a horizontal rectangle below or above the content area, footer, header, or any where in the theme. layout section, allowing users to toggle between โ€œAutoโ€ and โ€œManualโ€ modes:

It is still possible to configure the block to default to โ€œManualโ€ mode and add a specific column count, by using the columnCount attribute:

"layout": {
    "default": {
        "type": "grid",
        "columnCount": 5
    }
}

Set column and row spans on grid children

Blocks that opt into grid layout can also allow their child blocks to span across multiple grid columns and/or rows. This can be enabled with the allowSizingOnChildren attribute:

"layout": {
    "default": {
        "type": "grid"
    }
    "allowSizingOnChildren": true
}

This will enable Column span and Row span controls in the child block sidebar, under the Dimensions section:

It will also enable on-canvas handles that can be dragged to resize the block:

New grid variation for Group block

Group block now has a Grid variation:

Similarly to Row and Stack, Grid comes with allowSizingOnChildren enabled so children of Grid blocks can be resized.

Props to @bph for review and @juanmaguitar for proofreading.

#6-6, #dev-note, #dev-notes, #dev-notes-6-6

Performance Chat Agenda: 18 June 2024

Here is the agenda for this weekโ€™s performance team meeting scheduled for June 18, 2024 at 15:00 UTC.

  • Announcements
    • Welcome to our new members of #core-performance
    • Early WordPress 6.6 BetaBeta A pre-release of software that is given out to a large group of users to trial under real conditions. Beta versions have gone through alpha testing in-house and are generally fairly close in look, feel and function to the final product; however, design changes often occur as part of the process. 2 performance results [GitHub issue]
    • WordCampWordCamp WordCamps 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 highlights post [link]
    • Thanks to all who joined Contributor DayContributor Day Contributor 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/ at WordCamp Europe! [accomplishments]
  • Priority items
    • WordPress performance TracTrac An open source project by Edgewall Software that serves as a bug tracker and project management tool for WordPress. tickets
      • Current release (6.6)
      • Future release
    • Performance Lab pluginPlugin A plugin is a piece of software containing a group of functions that can be added to a WordPress website. They can extend functionality or add new features to your WordPress websites. WordPress plugins are written in the PHP programming language and integrate seamlessly with WordPress. These can be free in the WordPress.org Plugin Directory https://wordpress.org/plugins/ or can be cost-based plugin from a third-party. (and other performance plugins) including:
      • Auto-Sizes for Lazy-Loaded Images
      • Embed Optimizer
      • Fetchpriority
      • Image Placeholders
      • Modern Image Formats
      • Optimization Detective
      • Performant Translations
      • Speculative Loading
    • Active priority projects
  • Open floor

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


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

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

Editor: Unified Extensibility APIs in 6.6

WordPress 6.6 unified the different slots and extensibility APIs between the post and site editors. PluginPlugin A plugin is a piece of software containing a group of functions that can be added to a WordPress website. They can extend functionality or add new features to your WordPress websites. WordPress plugins are written in the PHP programming language and integrate seamlessly with WordPress. These can be free in the WordPress.org Plugin Directory https://wordpress.org/plugins/ or can be cost-based plugin from a third-party. authors do not need to integrate their extensions twice (once using wp.editPost and once using wp.editSite). Instead, the following slots are now available under the wp.editor global variable (@wordpress/editor package or wp-editor script handle).

  • PluginDocumentSettingPanel
  • PluginSidebarMoreMenuItem
  • PluginSidebar
  • PluginPostStatusInfo
  • PluginMoreMenuItem
  • PluginBlockSettingsMenuItem
  • PluginDocumentSettingPanel
  • PluginPostPublishPanel
  • PluginPrePublishPanel

Example

// my-file.js
import { registerPlugin } from '@wordpress/plugins';
import { PluginDocumentSettingPanel } from '@wordpress/editor';

const PluginDocumentSettingPanelDemo = () => (
  
     Custom Panel Contents
   
);

registerPlugin( 'plugin-document-setting-panel-demo', {
  render: PluginDocumentSettingPanelDemo,
  icon: 'palmtree',
} );

The above script registers a panel in the document sidebarSidebar A sidebar in WordPress is referred to a widget-ready area used by WordPress themes to display information that is not a part of the main content. It is not always a vertical column on the side. It can be a horizontal rectangle below or above the content area, footer, header, or any where in the theme. for all post types in both the post and site editor. The script can be enqueued in PHPPHP The web scripting language in which WordPress is primarily architected. WordPress requires PHP 7.4 or higher with the right script dependencies:

function example_enqueue_editor_assets() {
  wp_enqueue_script(
    'example-plugin',
    plugins_url( 'my-built-file.js', __FILE__ ),
    array( 'wp-editor', 'wp-plugins' ),
    1
  );
}

add_action( 'enqueue_block_editor_assets', example_enqueue_editor_assets );

Supporting multiple WordPress versions

The wp.editPost and wp.editSite slots will continue to work without changes, but the old slot locations will be deprecated. To avoid triggering console warnings, you can support both the new and old slots at the same time.

To support previous versions in the example above, the Slot import must be updated as shown in the following code:

// my-script.js
const PluginDocumentSettingPanel = wp.editor?.PluginDocumentSettingPanel ?? ( wp.editPost?.PluginDocumentSettingPanel ?? wp.editSite?.PluginDocumentSettingPanel );

Once you are ready to make WP 6.6 the minimum required version for your plugin, you should be able to drop the fallbacks and restore the initial code.

Limiting your extensions per post types

It is important to note that when switching from editPost or editSite slots to editor, your plugin will now load and render in both contexts.

Both editors (post and site editors) have the possibility to render and edit pages, templates, patternsโ€ฆ This means that most plugins probably need to load in both contexts. But you might not want to load your plugin for templates, patterns, or you may only want load your plugin for pages but not postsโ€ฆ

To perform these checks, plugin authors have access to a range of selectors in the coreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress./editor data store that allow them to hide or disable their behavior/UIUI User interface as they wish.

  • Some extensions might only make sense to publicly viewable post types (post types that render in the frontend). You can use the postTypeโ€™s viewable property to check for this.
  • Or you can use the name of the post type to only render for a limited set of post types.

Letโ€™s update the initial example to only render the slot for publicly viewable post types:

// my-file.js
import { registerPlugin } from '@wordpress/plugins';
import { PluginDocumentSettingPanel, store as editorStore } from '@wordpress/editor';
import { store as coreStore } from '@wordpress/core-data';


const PluginDocumentSettingPanelDemo = () => {
  const isViewable = useSelect( ( select ) => {
    const postTypeName = select( editorStore ).getCurrentPostType();
    const postTypeObject = select( coreStore ).getPostType( postTypeName );
    return postTypeObject?.viewable;
  }, [] );
  // If the post type is not viewable, do not render my plugin.
  if ( ! isViewable ) {
    return null;
  }


  return (
    
       Custom Panel Contents
     
  );
}


registerPlugin( 'plugin-document-setting-panel-demo', {
  render: PluginDocumentSettingPanelDemo,
  icon: 'palmtree',
} );

Thank you @ndiego @jeherve for contributing to and testing this post and @juanmaguitar for proofreading.

#6-6, #dev-note, #dev-notes, #dev-notes-6-6

Summary, Dev Chat, June 12, 2024

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

Announcements

  • WordPress 6.6 Beta 2ย was released on June 11. Thanks to everyone who was involved in getting that release. Please keep testing!

Forthcoming Releases

Nextย major releasemajor release A release, identified by the first two numbers (3.6), which is the focus of a full release cycle and feature development. WordPress uses decimaling count for major release versions, so 2.8, 2.9, 3.0, and 3.1 are sequential and comparable in scope.: 6.6

We are currently in theย WordPress 6.6 release cycle. See theย Roadmap Postย for details about what is planned for this release.

WordPress 6.6 BetaBeta A pre-release of software that is given out to a large group of users to trial under real conditions. Beta versions have gone through alpha testing in-house and are generally fairly close in look, feel and function to the final product; however, design changes often occur as part of the process. 3 is scheduled for next Tuesday, June 18, and is the last scheduled beta before RCrelease candidate One of the final stages in the version release cycle, this version signals the potential to be a final release to the public. Also see alpha (beta). 1.ย See the release schedule here.

@marybaum noted that the About page is currently in progress.

@joemcgill reminded everyone that we should be working on getting dev notesdev note Each important change in WordPress Core is documented in a developers note, (usually called dev note). Good dev notes generally include a description of the change, the decision that led to this change, and a description of how developers are supposed to work with that change. Dev notes are published on Make/Core blog during the beta phase of WordPress release cycle. Publishing dev notes is particularly important when plugin/theme authors and WordPress developers need to be aware of those changes.In general, all dev notes are compiled into a Field Guide at the beginning of the release candidate phase. published in the next 2 weeks before the field guideField guide The 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. is finalized.

Next GutenbergGutenberg The Gutenberg project is the new Editor Interface for WordPress. The editor improves the process and experience of creating new content, making writing rich content much simpler. It uses โ€˜blocksโ€™ to add richness rather than shortcodes, custom HTML etc. https://wordpress.org/gutenberg/ release: 18.6

Gutenberg 18.6 is scheduled for June 19 and will includeย these issues. This version will NOT be included in the WordPress 6.6 release.

Discussion

We didnโ€™t have anything specific for discussion for this chat, as many folks were at WCEU.

We discussed how best to stay up to date with UIUI User interface changes in the Editor. @joemcgill noted that changes to the editor UI happen in theย gutenberg repo, and are released first in the Gutenberg pluginPlugin A plugin is a piece of software containing a group of functions that can be added to a WordPress website. They can extend functionality or add new features to your WordPress websites. WordPress plugins are written in the PHP programming language and integrate seamlessly with WordPress. These can be free in the WordPress.org Plugin Directory https://wordpress.org/plugins/ or can be cost-based plugin from a third-party. so they can be tested before being included in a WordPress major release. Discussion about those changes generally happen in issues and PRs on that repo.

Additionally, plans for WordPress 6.6 were summarized in thisย Roadmap post, which may be a good way to see what else is changing so you can test and provide feedback before the final release.

@hellofromtonya also mentioned theย #core-editorย channel, which is helpful for when youโ€™re looking for where to start and if a feature or change is in the works.

@colorful-tones added: Another means to keep up to date on the latest updates is to check out (and consider subscribing to updates in the sidebarSidebar A sidebar in WordPress is referred to a widget-ready area used by WordPress themes to display information that is not a part of the main content. It is not always a vertical column on the side. It can be a horizontal rectangle below or above the content area, footer, header, or any where in the theme.) theย WordPress Developer Blog. For example, the latest post:ย Whatโ€™s new for developers? (June 2024)ย mentions this newer feature here.

@joemcgill also raised @dmsnellโ€˜s excellently written proposal โ€”ย Proposal: Bits as dynamic tokens โ€” and recommended taking time to read it and provide feedback or ask questions in the comments of that post.

Open Floor

@oglekler kindly offered to help support Contributor DayContributor Day Contributor 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/ at WCEU remotely, and contributors on the day were encouraged to join the #core Slack channel for help both on the day and going forward.

We also discussed not pinning the bugbug A bug is an error or unexpected result. Performance improvements, code optimization, and are considered enhancements, not defects. After feature freeze, only bugs are dealt with, with regressions (adverse changes from the previous version) being the highest priority. scrub post, since itโ€™s so long, and instead just link to it from the release page.

@ironprogrammer suggested posting a short signpost message pointing to the scrub, close comments, pin it. Or a sidebar update.

@joemcgill suggested exploring the excerptExcerpt An 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. feature on the Make team blogs.

Note: Anyone reading this summary outside of the meeting, please drop a comment in the post summary, if you can/want to help with something.

Props to @joemcgill for proofreading.

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

Data Views Update โ€“ June 2024

With the last few releases of WordPress, the glimmers of phase 3 of the GutenbergGutenberg The Gutenberg project is the new Editor Interface for WordPress. The editor improves the process and experience of creating new content, making writing rich content much simpler. It uses โ€˜blocksโ€™ to add richness rather than shortcodes, custom HTML etc. https://wordpress.org/gutenberg/ roadmap are starting to shine through, namely in the form of the new powerful Data Views. While exciting to see a glimpse of whatโ€™s to come, itโ€™s also causing an understandable increase in questions โ€“ What can we use today? What should we use based on each use case? What work is coming up next? This post seeks to provide answers at a high level view of these questions, along with some general context as to whatโ€™s being done and why. Itโ€™s pulled from a wide range of conversations including advancing the site editor index views, Roadmap to 6.6, and more. This is and shall continue to be an evolving conversation.

Background:ย 

What problems are Data Views trying to solve?

The current WP List Tables lack the flexibility required for more complex websites and are not suited for the technological demands of phase 3, which emphasizes collaboration workflows like saving and sharing specific views. Data Views aims to revolutionize these views by providing enhanced functionality, including alternative display options, extensive customization capabilitiescapability Aย capabilityย is permission to perform one or more types of task. Checking if a user has a capability is performed by the current_user_can function. Each user of a WordPress site might have some permissions but not others, depending on theirย role. For example, users who have the Author role usually have permission to edit their own posts (the โ€œedit_postsโ€ capability), but not permission to edit other usersโ€™ posts (the โ€œedit_others_postsโ€ capability)., and robust extension points.

What are Data Views?ย 

Data Views refers to an improved and reusable UIUI User interface for different screens in WordPress that deal with collections of things whether thatโ€™s templates, patterns, posts, media, and more. Currently, those views are known as WP List Tables and Data Views seeks to replace those over time. Itโ€™s being built with extensibility in mind and is a big part of phase 3, specifically the Adminadmin (and super admin) Redesign efforts. This new UI will also power other long term future parts of phase 3 work, including workflow improvements for assigning folks to review posts or creating custom views to streamline processes. Currently, the Data Views are isolated just to the Site Editor and an initial version was released in 6.5 with a broader iteration underway for 6.6.

Below is a video showing the current WP List Tables in comparison to the new Data Views, showing both shared functionality and some of what the Data Views can offer that WP List Tables canโ€™t, like different layouts, exposing more fields, and offering previews:

Why is the work being approached this way?

This work is intentionally being done first in the Site Editor with private APIs to allow for quick iteration and a more narrow impact than starting in the broader wp-admin landscape. The following principles are in mind as this work is underway:

  • Iteratively, with each step bringing meaningful improvements.
  • Stay subject to feedback from the broader community.
  • Stay backwards compatible.
  • Focus on accessibilityAccessibility Accessibility (commonly shortened to a11y) refers to the design of products, devices, services, or environments for people with disabilities. The concept of accessible design ensures both โ€œdirect accessโ€ (i.e. unassisted) and โ€œindirect accessโ€ meaning compatibility with a personโ€™s assistive technology (for example, computer screen readers). (https://en.wikipedia.org/wiki/Accessibility).
  • Built with extensibility in mind from the start.ย 
  • Best in class user experience.ย 

Ultimately, whatever is shipped publicly will need to be maintained and itโ€™s important to avoid disruptive changes while these efforts are in an iterative stage.ย ย 

Whatโ€™s happening for WordPress 6.6?

For WordPress 6.6, set to launch in July, the release includes work to bring the various management pages forward in the Site Editor (manage all templates, manage all template parts, manage all pages) so those options are immediately seen when visiting the respective sections, reducing the number of steps to access important information. For pages, a new side by side layout will be introduced so one can see both a list of all pages and a preview of the currently selected page. For patterns, template part management will be removed and integrated into the current overall patterns section. Interspersed within all of these larger changes are smaller enhancements in functionality and feel, including details normalization that will eventually scale up into a bulk editing tool.

Whatโ€™s coming up after WordPress 6.6?

A major priority is extensibility APIs so plugins in the future can begin altering and extending these pages, inevitably resulting in more feedback. Currently, an initial API has been bootstrapped to allow third-party developers to register and unregister post type actions with broader, high level plans outlined.

Outside of that, there are explorations underway to bring the new list views, as an opt-in experiment in the Gutenberg pluginPlugin A plugin is a piece of software containing a group of functions that can be added to a WordPress website. They can extend functionality or add new features to your WordPress websites. WordPress plugins are written in the PHP programming language and integrate seamlessly with WordPress. These can be free in the WordPress.org Plugin Directory https://wordpress.org/plugins/ or can be cost-based plugin from a third-party., to the Posts listing and the Media library. These are intentionally being done as experiments for now to see what might be viable for a future release and will take the form of contained Site Editor-like instances. At the same time, a Data Views Forms effort is underway thatโ€™s meant to allow for bulk editing first and, in the future, to be a framework to generate forms and details panels.

Re-imagined WordPress Media Library showing an organized sidebar with categories, file types, and tags on the left with a list of all media files in the frame.

A design that imagines a Data Views powered Media Library experience.ย 

Can we use Data Views?

TLDR: This work is in an evolving middle stage where feedback is needed but whatโ€™s being done isnโ€™t fully formed to implement wholesale.ย 

Extensibility has been a key piece of this work baked into all of these efforts from the very beginning. However, in order to move quickly to build on new parts of Data Views and avoid breaking changes, these APIs are currently Gutenberg plugin-only APIs. At the same time, itโ€™s important to get extender feedback to shape the work being done.ย 

For now, folks can bundle the Data Views styles into a plugin. You can even copy/paste these frames in the design library for quick mockups. Currently, the @wordpress/dataviews package is public already, meaning you can install it, use it from npm, and bundle it in your own scripts. What remains private is that itโ€™s not exposed as a WP global, which means future breaking changes are possible but youโ€™ll be able to upgrade the package at your own pace if you bundle it. There are also no extensibility APIs for the CoreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. provided data-views yet for WordPress 6.6 (Templates, pages, patterns) which means you canโ€™t alter these pages yet from a WordPress plugin. As mentioned above, an initial API has been bootstrapped to allow third-party developers to register and unregister post type actions with broader, high level plans outlined for furthering extensibility.ย 

For those who can adopt this work, please do and report back around the edges you find so we can iterate. For some, you may need to wait until itโ€™s fully formed. The answer depends on what youโ€™re trying to do and on what timescale. As always though, going as native as possible as soon as possible is beneficial both to ensure whatโ€™s being built works for your use case and to prevent the future work that will be needed to adopt whatโ€™s built.ย 

In the future, you can imagine a more customizable interface all within the same current navigation structure rather than a wp-admin like interface. Folks can pick and choose which plugin interfaces to pin and use, rearrange navigation items, and experience a similar flow and presentation no matter where they go. We arenโ€™t there yet but weโ€™re on a path in that direction:

View of an imagined WordPress interface with a sidebar showing various options to select between and a preview of the site in question.

Where can I follow along and provide feedback?

Feedback is wanted and needed! Here are a few ways to follow along, depending on the level you want:

  • Phase 3: WordPress admin redesign: this is the highest level overview of the current work and thinking for the whole of the admin redesign.
  • DataViews component: this is the highest level overview of the data views specific component and technical work needed that is a big piece of the overall admin redesign.
  • Advancing site editor index views: this is a medium term scope of work thatโ€™s likely to exist across a few WordPress major releases.
  • Data Views Extensibility issue: this is a dedicated issue to the topic of extensibility.ย 
  • Data Views for Posts, Categories, and Tags: this is a dedicated issue around exploring bringing data views to power the Posts section of WP Admin.
  • Data Views issues label: this gives a very granular look at the various pieces being worked on. This might be helpful to wade through when youโ€™re attempting to open an issue or comment on a current one.

To share feedback and ask questions, check currently open issues to leave a comment or open a new GitHub issue in the Gutenberg repo. This post is simply to share an update and the best place to get involved in a discussion is in GitHubGitHub GitHub is a website that offers online implementation of git repositories that can easily be shared, copied and modified by other developers. Public repositories are free to host, private repositories require a paid subscription. GitHub introduced the concept of the โ€˜pull requestโ€™ where code changes done in branches by contributors can be reviewed and discussed before being merged by the repository owner. https://github.com/. If you have clarifying questions about the post itself, youโ€™re welcome to ask them.

Thank you to @fabiankaegy @jorbin @youknowriad @joemcgill @mikachan for reviewing and collaborating on this post.ย Thank you to @joen for creating the video used.

#gutenberg, #phase-3, #plugins

Agenda, Dev Chat, Wednesday June 12, 2024

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

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

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

Announcements

WordPress 6.6 Beta 2 was released on June 11. Contributors will now be focused on testing and fixing bugs discovered during betaBeta A pre-release of software that is given out to a large group of users to trial under real conditions. Beta versions have gone through alpha testing in-house and are generally fairly close in look, feel and function to the final product; however, design changes often occur as part of the process. testing.

Forthcoming releases

Next major releasemajor release A release, identified by the first two numbers (3.6), which is the focus of a full release cycle and feature development. WordPress uses decimaling count for major release versions, so 2.8, 2.9, 3.0, and 3.1 are sequential and comparable in scope.: 6.6

We are currently in the WordPress 6.6 release cycle. WordPress 6.6 Beta 2 was released on Tuesday, June 11. Please continue testing.

Next maintenance release

No maintenance releases are currently being planned.

Next GutenbergGutenberg The Gutenberg project is the new Editor Interface for WordPress. The editor improves the process and experience of creating new content, making writing rich content much simpler. It uses โ€˜blocksโ€™ to add richness rather than shortcodes, custom HTML etc. https://wordpress.org/gutenberg/ release: 18.6

Gutenberg 18.6 is scheduled for June 19 and will includeย these issues. This version will NOT be included in the WordPress 6.6 release.

Discussions

As weโ€™re in the middle of the 6.6 release cycle, weโ€™ll prioritize any items for this release. Please review the Editor Updates section of this agenda for a list of updates of several key features related to this release.

Highlighted Posts

Editor updates

You can keep up to date with the major Editor features that are currently in progress for 6.6 by viewing these Iteration issues.

Props to @annezazu for putting together these updates.

6.6 related updates:

  • Color & style variations:ย changes were made to this feature in light of the discussion inย Allow theme authors to opt out of color and typography preset autogeneration in WordPress 6.6. TLDR: color and typography presets will not be autogenerated from current style variations and instead will need to be intentionally made.
  • Unified publish flows:ย after a discussionย revisionsRevisions The WordPress revisions system stores a record of each saved draft or published update. The revision system allows you to see what changes were made in each revision by dragging a slider (or using the Next/Previous buttons). The display indicates what has changed in each revision. have been returned to a higher level of prominence in the publish flow. Thank you everyone who chimed in.

Outside of 6.6:

  • Phase 3: Data views:ย Bootstrap Actions Extensibility APIย has merged to allow third-party developers to register and unregister post type actions, a new issue has been opened for bringingย DataViews to Posts, Categories and Tags, and a very basic PR was merged forย Posts Dashboard: Add a new experimental empty page. All of this helps move forward opening up data views to third parties and to more places in the WordPress experience, starting as experiments.
  • Phase 3: In line commenting:ย aย PR continues to be workedย on to bring about an initial experimental feature for in line blockBlock Block is the abstract term used to describe units of markup that, composed together, form the content or layout of a webpage using the WordPress editor. The idea combines concepts of what in the past may have achieved with shortcodes, custom HTML, and embed discovery into a single consistent API and user experience. commenting. This will also be implemented as an experiment in order to get feedback.
  • Phase 3: Media Library:ย Designs were updated forย Phase 3: Collaboration > Media Libraryย and folks are looking to implement an initial experiment.
  • Block bindings:ย a new issue has been openedย to support a better user experience when modifying post metadata.
  • Site Editor:ย a PR is underway forย Feature: Set editor rendering mode by post typeย which would allow developers to set the default rendering mode of the block editor (show template or not). In the PR a discussion is underway about setting the template lock view as the default for pages for 6.7 and having this as a user setting in a follow up PR that users can override.
  • Styles:ย a PR is underway to add aย Font size presets UIย and is ready for broader testing/feedback.

Outside of the above, @annezazu has published theย 6.6 source of truthย early look. Itโ€™s expected things might shift during the beta period but hopefully this helps folks prepare for the release and help educate others on whatโ€™s to come.

Tickets for assistance

Tickets for 6.6 will be prioritized.

Please include details of tickets / PRs and the links in the comments, and if you intend to be available during the meeting if there are any questions or you will be async.

Open floor

Items for this can be shared in the comments.

Props to @mikachan for reviewing.

#agenda, #core, #dev-chat

Performance Chat Summary: 11 June 2024

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

Announcements

  • Welcome to our new members ofย #core-performance
  • 3.1.0 launched on June 6 to include new performanceย pluginPlugin A plugin is a piece of software containing a group of functions that can be added to a WordPress website. They can extend functionality or add new features to your WordPress websites. WordPress plugins are written in the PHP programming language and integrate seamlessly with WordPress. These can be free in the WordPress.org Plugin Directory https://wordpress.org/plugins/ or can be cost-based plugin from a third-party.ย assets
  • Early WordPress 6.6ย BetaBeta A pre-release of software that is given out to a large group of users to trial under real conditions. Beta versions have gone through alpha testing in-house and are generally fairly close in look, feel and function to the final product; however, design changes often occur as part of the process.ย 1 performance results [GitHub issue]
    • Early investigations did NOT show a regressionregression A software bug that breaks or degrades something that previously worked. Regressions are often treated as critical bugs or blockers. Recent regressions may be given higher priorities. A "3.6 regression" would be a bug in 3.6 that worked as intended in 3.5. at all, but instead shows that 6.6 Beta 1 is improved from 6.5.3 (conversation to be continued on the GitHubGitHub GitHub is a website that offers online implementation of git repositories that can easily be shared, copied and modified by other developers. Public repositories are free to host, private repositories require a paid subscription. GitHub introduced the concept of the โ€˜pull requestโ€™ where code changes done in branches by contributors can be reviewed and discussed before being merged by the repository owner. https://github.com/ issue)
  • Contributor DayContributor Day Contributor 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/ย atย WordCampWordCamp WordCamps 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, Turin, Italy on Thursday June 13

Priority Items

  • WordPress performance TracTrac An open source project by Edgewall Software that serves as a bug tracker and project management tool for WordPress. tickets
    • Current release (WP 6.6)
  • Performance Lab plugin (and other performance plugins)
    • Auto-Sizes for Lazy-Loaded Images
    • Embed Optimizer
    • Fetchpriority
    • Image Placeholders
    • Modern Image Formats
    • Optimization Detective
    • Performant Translations
    • Speculative Loading
  • Active priority projects

WordPress Performance Trac Tickets

Performance Lab Plugin (and other Performance Plugins)

  • @mukesh27 PR that ready for review:
    • PRย #1298ย โ€“ Audit Autoloaded Options Site Health should extend CoreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress.โ€™s check if available
  • @joemcgill Also worth noting that Chrome 126 is scheduled to ship today with auto-sizes support turned on, so we should be able to get better testing feedback soon from folks using that feature pluginFeature Plugin A plugin that was created with the intention of eventually being proposed for inclusion in WordPress Core. See Features as Plugins.
    • @westonruter openedย https://github.com/WordPress/performance/pull/1296ย in order to do a quick minor releaseMinor Release A 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. of Optimization Detective and could use reviews

Active Priority Projects

Improving the calculation of image size attributes

  • @mukesh27 has been working on improved imageย sizesย algorithm
    • PRs merged:
      • PRย #1250ย โ€“ Initial implementation of improved imageย sizesย algorithm
    • PRs ready for review:
      • PRย #1290ย โ€“ improved imageย sizesย for left/right alignment
      • PRย #1252ย โ€“ Use correct sizes for small images

Optimized Autoloaded Options

Improved template loading

  • @thekt12 I have raised a new bugbug A bug is an error or unexpected result. Performance improvements, code optimization, and are considered enhancements, not defects. After feature freeze, only bugs are dealt with, with regressions (adverse changes from the previous version) being the highest priority. #61405 (with aย POCย that currently breaks some tests ). Same pattern was also observed inย WP_Theme_JSON_Data::$theme_json, but I am not sure of the performance impact it will have. PR#6781ย will address the remainder of #57789ย and #59600 ; estimated to give at least 3% improvement.

Open Floor

Our next chat will be held on Tuesday, June 18, 2024 at 15:00 UTC in the #core-performance channel in Slack.

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

Performance Chat Agenda: 11 June 2024

Here is the agenda for this weekโ€™s performance team meeting scheduled for June 11, 2024 at 15:00 UTC.

  • Announcements
    • Welcome to our new members of #core-performance
    • 3.1.0 launched on June 6 to include new performance pluginPlugin A plugin is a piece of software containing a group of functions that can be added to a WordPress website. They can extend functionality or add new features to your WordPress websites. WordPress plugins are written in the PHP programming language and integrate seamlessly with WordPress. These can be free in the WordPress.org Plugin Directory https://wordpress.org/plugins/ or can be cost-based plugin from a third-party. assets
    • Early WordPress 6.6 BetaBeta A pre-release of software that is given out to a large group of users to trial under real conditions. Beta versions have gone through alpha testing in-house and are generally fairly close in look, feel and function to the final product; however, design changes often occur as part of the process. 1 performance results [GitHub issue]
    • Contributor DayContributor Day Contributor 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/ at WordCampWordCamp WordCamps 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, Turin, Italy on Thursday June 13
  • Priority items
    • WordPress performance TracTrac An open source project by Edgewall Software that serves as a bug tracker and project management tool for WordPress. tickets
      • Current release (6.6)
      • Future release
    • Performance Lab plugin (and other performance plugins) including:
      • Auto-Sizes for Lazy-Loaded Images
      • Embed Optimizer
      • Fetchpriority
      • Image Placeholders
      • Modern Image Formats
      • Optimization Detective
      • Performant Translations
      • Speculative Loading
    • Active priority projects
  • Open floor

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


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

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

What is new in Gutenberg 18.5 (05 Jun)

โ€œWhatโ€™s new in GutenbergGutenberg The Gutenberg project is the new Editor Interface for WordPress. The editor improves the process and experience of creating new content, making writing rich content much simpler. It uses โ€˜blocksโ€™ to add richness rather than shortcodes, custom HTML etc. https://wordpress.org/gutenberg/โ€ฆโ€ posts (labeled with the #gutenberg-new tag) are posted following every Gutenberg release on a biweekly basis, showcasing new features included in each release. As a reminder, hereโ€™s an overview of different ways to keep up with Gutenberg and the Editor.

Gutenberg 18.5 has been released and is available for download!

Gutenberg 18.5 introduces several exciting features, enhancements, and some bugbug A bug is an error or unexpected result. Performance improvements, code optimization, and are considered enhancements, not defects. After feature freeze, only bugs are dealt with, with regressions (adverse changes from the previous version) being the highest priority. fixes. Some of the highlights of this release include better tools for section styling, providing more customization options for your sections, a new Custom Shadows feature which improves the control over our shadows, and also the ability to edit a blockBlock Block is the abstract term used to describe units of markup that, composed together, form the content or layout of a webpage using the WordPress editor. The idea combines concepts of what in the past may have achieved with shortcodes, custom HTML, and embed discovery into a single consistent API and user experience.โ€™s custom fields directly in the block itself, thanks to the latest additions to the Block Bindings APIAPI An API or Application Programming Interface is a software intermediary that allows programs to interact with each other and share data in limited, clearly defined ways..

Additionally, this release supports copying custom CSSCSS Cascading Style Sheets. between variations, relative theme path URLs for background images in theme.jsonJSON JSON, or JavaScript Object Notation, is a minimal, readable format for structuring data. It is used primarily to transmit data between a server and web application, as an alternative to XML., and improved consistency in root padding across blocks.

  1. Section Styling with Extended Block Style Variations
  2. Custom Shadows!
  3. Block Bindings: Edit in Post Meta Source
  4. Other Notable Highlights
  5. Changelog
  6. First time contributors
  7. Contributors

Section styling with extended block style variations

From the Dev Notedev note Each important change in WordPress Core is documented in a developers note, (usually called dev note). Good dev notes generally include a description of the change, the decision that led to this change, and a description of how developers are supposed to work with that change. Dev notes are published on Make/Core blog during the beta phase of WordPress release cycle. Publishing dev notes is particularly important when plugin/theme authors and WordPress developers need to be aware of those changes.In general, all dev notes are compiled into a Field Guide at the beginning of the release candidate phase. draft:

Section-based styling has been enabled by extending the existing Block Styles feature (aka block style variations) to support styling inner elements and blocks. These enhanced block style variations can even be applied in a nested fashion due to uniform CSS specificity (0-1-0) for Global Styles, which will be introduced in WordPress 6.6.

In addition block style variations can now be:

  • Registered across multiple block types at the same time
  • Defined via multiple methods; theme.json partials, within theme style variations, or by passing a theme.json shaped object in the styleโ€™s data given to existing block style registration functions
  • Customized via Global Styles

Read more.

Custom shadows!

The new Custom Shadows feature allows for the creation and editing of shadows within Global Styles. Users can now add depth and visual interest to their site elements with more nuanced shadow effects.

Block Bindings: allow editing post metaMeta Meta 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. directly in blocks

Using the latest changes to the Block Binding API, this change means that we can now edit the value of custom fields directly through the blocks when they are connected to those fields. For example, when a paragraph blockโ€™s content is bound to a custom fieldCustom Field Custom Field, also referred to as post meta, is a feature in WordPress. It allows users to add additional information when writing a post, eg contributorsโ€™ names, auth. WordPress stores this information as metadata. Users can display this meta data by using template tags in their WordPress themes., the user can edit the custom field value by editing the block content.

Other Notable Highlights

  • Copy custom CSS between variations when switchingย (61752)
  • Support Relative Theme Path URLs for Background Images in theme.json (61271)
  • Improve Consistency in Root Padding Across Blocks (60715)

Changelog

Features

Global Styles

  • Add defaultSpacingSizes option (theme.json v3). (61842)
  • Edit/create shadows in global styles. (60706)
  • Relocate Background Image controls to sit under Layout. (61886)

Block Library

  • Enable shadow support for cover block. (61883)

Block bindings

  • Allow editing in post meta source. (61753)

Script Modules API

  • Add script module data implementation. (61658)

Synced Patterns

  • Add __default binding for pattern overrides. (60694)

Block Styles

  • Extend block style variations as mechanism for achieving section styling. (57908)

Enhancements

  • Block card: Fix typographic widow. (61438)
  • Block settings: Update variant of โ€œApply globallyโ€ Button component to secondary. (61850)
  • Editor: Align the Post Format control design with the rest of the post sidebarSidebar A sidebar in WordPress is referred to a widget-ready area used by WordPress themes to display information that is not a part of the main content. It is not always a vertical column on the side. It can be a horizontal rectangle below or above the content area, footer, header, or any where in the theme. controls. (62066)
  • Editor: Polish the style of some of the post summary rows. (61645)
  • Format Library: Refactor โ€˜Inline Imageโ€™ edit component. (62135)
  • Playwright end-to-end Utils: Add fullscreenMode option to createNewPost. (61766)
  • Post Sticky Toggle: Improve the design. (62012)
  • Post Summary: Move PostTemplatePanel below URLURL A specific web address of a website or web page on the Internet, such as a websiteโ€™s URL www.wordpress.org and Author. (62137)
  • Remove trashTrash Trash in WordPress is like the Recycle Bin on your PC or Trash in your Macintosh computer. Users with the proper permission level (administrators and editors) have the ability to delete a post, page, and/or comments. When you delete the item, it is moved to the trash folder where it will remain for 30 days. button in post/page inspector. (61792)
  • Shadows instead of borders on interface skeleton. (61835)
  • Tweak contextual block toolbar position. (61836)
  • Update: For synced entities the icon should be purple. (62024)
  • Update: Implement new author panel design. (61362)
  • Update: Implement new parent and order design. (61918)
  • Update: Move duplicate pattern and template part actions to the editor package. (61879)

Site Editor

  • Block Editor: Check for multiple block usage in the block-editor package. (62086)
  • Copy custom CSS between variations when switching. (61752)
  • Data views: Align page headers. (62115)
  • Inspector summary rows: Make tooltips appear middle-left. (61815)
  • Inspector: Add โ€˜/โ€™ prefix to Link button. (62073)
  • Inspector: Display home / posts page badge. (62071)
  • Inspector: Remove revisionsRevisions The WordPress revisions system stores a record of each saved draft or published update. The revision system allows you to see what changes were made in each revision by dragging a slider (or using the Next/Previous buttons). The display indicates what has changed in each revision. panel. (61867)
  • Make post meta row button treatment consistent. (61954)
  • Remove โ€˜Manageโ€ฆโ€™ prefix in Pages / Templates data views. (62107)
  • Remove the details pages. (61741)
  • Update actions order in site editor for template and template parts. (61803)
  • Use site title as a link. (61258)
  • [Site Editor]: Add create pattern button in patterns page. (60302)
  • withRegistryProvider: Prevent intermediate state with no children. (61859)

Data Views

  • Add badge to title for posts & front pages. (61718)
  • Clarify date value in Pages. (61709)
  • DataViews: label prop in Actions API can be either a string or a function. (61942)
  • Fix pagination position on pages with short lists. (61712)
  • Pages data view: Add Pending and Private views. (62138)
  • Pages sidebar: Adds published & scheduled items. (62021)
  • Stop Patterns data view headerHeader The header of your site is typically the first thing people will experience. The masthead or header art located across the top of your page is part of the look and feel of your website. It can influence a visitorโ€™s opinion about your content and you/ your organizationโ€™s brand. It may also look different on different screen sizes. shrinking. (61801)
  • Update grid layout on small screens. (61820)
  • Update list layout action styling. (61797)
  • Update page component (and some data view elements) spacing metrics. (61333)
  • Visually hide โ€˜Actionsโ€™ column header. (61710)

Global Styles

  • Add block-level Text Alignment UIUI User interface. (61717)
  • Add option to remove site-wide theme background image. (61998)
  • Background image: Add support for relative theme path URLs in top-level theme.json styles. (61271)
  • Background image: Update controls defaults and layout. (62000)
  • Background images: Add defaults for background size. (62046)
  • Donโ€™t filterFilter Filters are one of the two types of Hooks https://codex.wordpress.org/Plugin_API/Hooks. They provide a way for functions to modify data of other functions. They are the counterpart to Actions. Unlike Actions, filters are meant to work in an isolated manner, and should never have side effects such as affecting global variables and output. out typography variations where the heading and body fonts are the same. (61327)
  • Make color variations fit in a bit better visually. (61617)
  • Make it clearer how to edit a siteโ€™s palette. (61364)
  • Move type presets below elements. (61863)
  • Restore the default variation to the color and typography style tiles. (61901)
  • Show shadow tool by default under global styles. (61981)

Components

  • Add vw and vh units to the custom font size picker. (60607)
  • CustomSelectControlV2: Use InputBase for styling. (60261)
  • Tabs: Indicator animation. (60560)
  • Try: Add CSS Custom Properties to CSS types. (61872)

Zoom Out

  • Hide inserters behind the experiment flag. (61866)
  • Inserter: Auto-close the inserter unless the zoom out experiment is on. (61856)
  • Show the inserters only when a section is selected. (61559)
  • The patterns tab behind a new experiment. (61601)

Block Editor

  • Adjust pattern list items resting, hover, focus styles. (61831)
  • Tweak pattern categories sidebar. (62113)
  • Writing flow: Remove first empty paragraph on Backspace. (61889)

Block bindings

  • Add Block Bindings Panel to Block Inspector. (61527)
  • Add indicator for metadata changes to Save Panel when reviewing modified entities. (61811)
  • Lock binding editing with functions. (61734)

Block Variations

  • Detect active variation correctly based on RichText attribute. (62325)
  • Have getActiveBlockVariation return variation with highest specificity. (62031)
  • Support dot notation in isActive string array. (62088)

Layout

  • More consistent root padding. (60715)
  • Try using coloured overlay instead of border for grid visualiser. (61390)

Block Library

  • Added Bluesky icon to the Social Icon Block. (61372)
  • Media & Text: Replace the deprecated __experimentalImageSizeControl with ResolutionTool. (57540)

Inspector Controls

  • Align both โ€œDesignโ€ pattern list panels. (62161)

Post Editor

  • Add home template details to inspector controls. (61762)

Interactivity API

  • Clarify some warning messages. (61720)

Patterns

  • Adjust the icons and text of the binding connected blocks. (61560)

Bug Fixes

  • Editor: Only render the site logo once if thereโ€™s a fill. (62320)
  • Interactivity API: Increase directive wp-each-child priority. (62293)w
  • Compose: Fix โ€˜useFocusOnMountโ€™ cleanup callback. (62053)
  • Do not auto save post status changes. (62171)
  • Editor: Fix canvas padding in post editor. (61893)
  • EntityProvider: Avoid remounts and simplify. (61882)
  • Fix shadow and border for pattern categories panel. (62158)
  • Image Block: Conditionally Render Block Control Based on Component Presence. (62132)
  • Interactivity API: Fix null and number strings as namespaces runtime error. (61960)
  • PostCardPanel: Fix ESLint error. (62109)
  • Remove build-types/ clean from clean:Packages. (62008)
  • Script Modules: Fix private method reflection access. (62154)
  • ServerSideRender: Fix data loading in development mode. (62140)
  • Shadow Panel: Make subtitle translatable. (62022)
  • Site Editor: Fix the Root Padding styles. (61906)
  • Writing flow: Fix heading crash on split (via paste). (61900)
  • e2e: Fix Site Editor Styles test. (62111)

Post Editor

  • Consolidate and fix delete and edit post actions. (61912)
  • Consolidate and fix rename post action. (61857)
  • Document Bar: Decode HTMLHTML HyperText Markup Language. The semantic scripting language primarily used for outputting content in web browsers. entities and take into account cases where there is no title. (62087)
  • Editor: Donโ€™t apply purple accent to the unsynced pattern title. (61704)
  • Editor: Ensure Copy button in sidebar copies whole permalink, with URL protocol. (61876)
  • Editor: Fix the โ€˜DocumentBarโ€™ position for long titles. (61691)
  • Editor: Render publish date control when the status is future(scheduled). (62070)
  • Editor: Unify button size in pre-publish panel. (62123)
  • Editor: Use edited entity for post actions. (61892)
  • Fix read only post status styles. (61722)
  • Post Actions: Hide the trash action for auto-drafts. (61865)

Block Editor

  • Inserter: Update Openverse API URLs. (62241)
  • Fix being unable to switch modes while inserter is open. (61563)
  • Fix editor inserter tabs indicator. (61973)
  • Fix positioning of close icons in panels to be consistent. (61832)
  • Fix syncing of publish date between publish and post status panel. (62165)
  • Improve link conrol preview when show button text label is enabled. (61726)
  • Inserter: Show all blocks (alternative). (62169)
  • InspectorControls: Text not displayed when โ€œShow button text labelsโ€ is enabled. (61949)
  • Link Control: Fix focus handlers in development mode. (62141)
  • Media & Text block: Remove the link option when the featured imageFeatured image A featured image is the main image used on your blog archive page and is pulled when the post or page is shared on social media. The image can be used to display in widget areas on your site or in a summary list of posts. is used. (60510)
  • Writing flow: Fix paste for input fields. (61389)

Block Library

  • Classic block: Fix content syncing effect for ReactReact React is a JavaScript library that makes it easy to reason about, construct, and maintain stateless and stateful user interfaces. https://reactjs.org StrictMode. (62051)
  • Donโ€™t steal focus when opening browse all blocks. (61975)
  • Fix: The latest post block โ€“ post titles overlapping. (61356)
  • Fixed : Update alt text decision tree links to be translatable. (62076)
  • Fixed: Custom HTML Block should display content in LTR layout for all languages. (62083)
  • More block: Fix React warning when adding custom text. (61936)
  • useUploadMediaFromBlobURL: Prevent duplicate uploads in StrictMode. (62059)

Global Styles

  • Fix make dimensions.aspectRatios key of theme.json files translatable. (61774)
  • Hide the presets panel for when there are less or exactly one presets available. (62074)
  • Prevent Typography panel title from wrapping. (62124)
  • Shadow Panel: Generates unique shadow slugs by finding max suffix and incrementing it. (61997)
  • Styles: try wrapping with :Root to fix reset styles. (61638)
  • Transform Styles: Update selector so that styles work when custom fields panel is active. (62121)

Site Editor

  • Align the template title to the center in the โ€˜Add templateโ€™ screen. (62175)
  • Close publish sidebar if not in edit mode. (61707)
  • Fix the site editor Adminadmin (and super admin) Bar menu item. (61851)
  • Use a consistent snackbar position. (61756)

Components

  • Fix: The focus styles for tabPanel. (61317)
  • InputControl: Fix z-index issue causing slider dots to appear in front of the Appearance dropdown. (61937)
  • getAutocompleterUI: Donโ€™t redefine ListBox component on every render. (61877)

Synced Patterns

  • Block Bindings: Filter pattern overrides source in bindings panel. (62015)
  • Fix detaching patterns when a pattern has overrides, but there are no override values. (62014)

Block bindings

  • Donโ€™t show non-existing and not supported attributes in block bindings panel. (62183)

Layout

  • Remove extra bracket in the site editor root padding styles. (62159)

Block Styles

  • Fix block style variation styles for blocks with complex selectors. (62125)

Code Editor

  • Editor: Unify text/code editor between post and site editors. (61934)

Page Content Focus

  • Remove lock icons from Content blocks inner blocks when editing a page in the site editor. (61922)

Patterns

  • Templates: Only resolve patterns for REST APIREST API The REST API is an acronym for the RESTful Application Program Interface (API) that uses HTTP requests to GET, PUT, POST and DELETE data. It is how the front end of an application (think โ€œphone appโ€ or โ€œwebsiteโ€) can communicate with the data store (think โ€œdatabaseโ€ or โ€œfile systemโ€) https://developer.wordpress.org/rest-api/ endpoints. (61757)

Interactivity API

  • Turn named capturing groups back into numbered ones inside toVdom. (61728)

Block API

  • Fix: Enable Text Align UI to be controlled correctly with theme.json. (61182)

REST API

  • Return an empty object when no fallback templates are found (wp/v2/templates/lookup). (60925)

AccessibilityAccessibility Accessibility (commonly shortened to a11y) refers to the design of products, devices, services, or environments for people with disabilities. The concept of accessible design ensures both โ€œdirect accessโ€ (i.e. unassisted) and โ€œindirect accessโ€ meaning compatibility with a personโ€™s assistive technology (for example, computer screen readers). (https://en.wikipedia.org/wiki/Accessibility)

Global Styles

  • Shadow Panel: Improve a11yAccessibility Accessibility (commonly shortened to a11y) refers to the design of products, devices, services, or environments for people with disabilities. The concept of accessible design ensures both โ€œdirect accessโ€ (i.e. unassisted) and โ€œindirect accessโ€ meaning compatibility with a personโ€™s assistive technology (for example, computer screen readers). (https://en.wikipedia.org/wiki/Accessibility) and fix browser console error. (61980)

Data Views

  • Always show Actions table header. (61847)

Block Library

  • Fix: Adds help props for description of Play Inline toggle. (61310)

Performance

  • Perf: Batch block list settings in single action. (61329)
  • Remove additional call to WP_Theme_JSON_Gutenberg::__construct. (61262)

Interactivity API

  • Introduce wp-on-async directive as performant alternative over synchronous wp-on directive. (61885)

Post Editor

  • DocumentBar: Only selected data needed for rendering. (61706)

Experiments

Interactivity API

  • Use output buffer and HTML tagtag A directory in Subversion. WordPress uses tags to store a single snapshot of a version (3.6, 3.6.1, etc.), the common convention of tags in version control systems. (Not to be confused with post tags.) processor to inject directives on BODY tag for full-page client-side navigation. (61212)

Documentation

  • Add JSDoc to PostVisibility, PostVisibilityCheck, and PostVisibilityLabel. (61735)
  • Add PostURL component documentation. (61737)
  • Add a section about block filters to the Filters and HooksHooks In WordPress theme and development, hooks are functions that can be applied to an action or a Filter in WordPress. Actions are functions performed when a certain event occurs in WordPress. Filters allow you to modify certain functions. Arguments used to hook both filters and actions look the same. doc. (61771)
  • Add an example and improve readability of the Block Filters doc. (61770)
  • Add docblockdocblock (phpdoc, xref, inline docs) to PostTitle and PostTitleRaw component. (61740)
  • Add documentation for DocumentBar. (61733)
  • Add documentation for PostFeaturedImage, PostFeaturedImageCheck, PostFeaturedImagePanel. (61165)
  • Add documentation for PostLastRevision, PostLastRevisionCheck, PostLastRevisionPanel components. (61166)
  • Add documentation for PostSchedule, PostScheduleCheck, PostSchedulePanel, PostScheduleLabel, usePostScheduleLabel components. (61345)
  • Add documentation for the EditorNotices component. (61736)
  • Add documentation for the EditorProvider and ExperimentalEditorProvider components. (61739)
  • Added missing global documentation. (61537)
  • Changelog: Add note about removing legacy operators. (62013)
  • Docs: Fix spacing in PHPPHP The web scripting language in which WordPress is primarily architected. WordPress requires PHP 7.4 or higher doc block in comments block. (61911)
  • EditorBoundary editor component. (61950)
  • Fix typo. (61830)
  • Fix: Block library README.md link. (62081)
  • Fix: Custom block editor link. (61962)
  • For PostTextEditor component. (62099)
  • LocalAutosaveMonitor editor component. (61951)
  • PageTemplate + PostTemplatePanel editor components. (61961)
  • PostComments editor component. (61964)
  • PostDiscussionPanel editor component. (61966)
  • PostExcerptPanel editor component. (61967)
  • PostLockedModal editor component. (61968)
  • PostPendingStatus + PostPendingStatusCheck editor components. (61970)
  • PostPingbacks editor component. (62035)
  • PostPreviewButton editor component. (62036)
  • Storybook: Add badges based on tags. (61111)
  • Update PostFormat, PostFormatCheck editor component documentation. (61732)
  • Update block.json file with correct links. (61880)
  • Update link to architecture key concepts. (61965)
  • Update links to correct lodash website. (62188)
  • Update pluginPlugin A plugin is a piece of software containing a group of functions that can be added to a WordPress website. They can extend functionality or add new features to your WordPress websites. WordPress plugins are written in the PHP programming language and integrate seamlessly with WordPress. These can be free in the WordPress.org Plugin Directory https://wordpress.org/plugins/ or can be cost-based plugin from a third-party.-document-setting-panel.md. (61782)
  • Update tutorial.md. (62054)

Code Quality

  • Add curly brace autofix commit to .git-blame-ignore-revs. (62144)
  • Add eslint rule for curly brace presence in JSX. (62026)
  • Blocks: Remove pipe usage and dependency on compose. (62127)
  • Clean up packages build-types when cleaning types. (61939)
  • Command Palette: Remove unused URL parameter. (61783)
  • Commands: Unify the editor context between post and site editors. (61862)
  • Dataviews: Remove unused dependencies. (62010)
  • Distraction Free: Unify the header animation. (62167)
  • Editor: Move editor toggle commands to the editor package. (62093)
  • Editor: Move the InterfaceSkeleton to the editor package. (62118)
  • Editor: Move the resizing of the editor to the EditorCanvas component. (61896)
  • Editor: Remove extra div container and unify the container between post and site editors. (62016)
  • Editor: Remove obsolete listViewLabel prop from DocumentTools. (62032)
  • Editor: Remove useless props from InserterSidebar component. (62103)
  • Editor: Unify the MediaUpload hook between post and site editors. (62085)
  • Editor: Unify the content area of the post and site editors. (61860)
  • Fix: React compiler error on button. (61958)
  • Fix: Remove unused css block on patterns page. (62058)
  • Fix: Remove unused css code from the navigation screen. (62060)
  • Fix: Some jsdoc return types on edit site selector. (62061)
  • Improve distclean script. (62019)
  • Interactivity API: Move all utils inside utils.ts. (61721)
  • Interactivity API: Move init.js to TypeScript. (61723)
  • Make onPatternCategorySelection private. (62130)
  • Remove useless clsx calls. (61969)
  • Rename backportbackport A port is when code from one branch (or trunk) is merged into another branch or trunk. Some changes in WordPress point releases are the result of backporting code from trunk to the release branch.-changelog/6279.md to backport-changelog/6.6/6279.md. (61894)
  • Update: Remove unused components. (61955)
  • end-to-end Tests: Fix React warnings triggered by test plugins. (61935)

Components

  • CustomSelectControl: Fix menuProps mutation. (62149)
  • Fix remaining warning in ColorPanelDropdown. (61933)
  • Make the ProgressBar public. (61062)
  • Remove reduceMotion utility. (61963)
  • SlotFills: Use state for registry initialization. (61802)
  • Style Book: Use state to initialize examples. (61848)
  • Tooltip: Fix Ariakit tooltip store usage. (61858)
  • ProgressBar: Simplify default width implementation and make it more easily overridable. (61976)

Block Editor

  • Fix ZoomOutModeInserters dependencies. (61908)
  • Fix wrapper props mutation in BlockListBlock. (61789)
  • Remove some utility functions. (61784)
  • Shadows: Unlock private components and hooks at the file level. (61790)
  • Unlock private setting keys at the file level. (61813)
  • Unlock the private โ€˜kebabCaseโ€™ function at a file level. (60755)
  • useBlockInspectorAnimationSettings: Remove unnecessary deps. (61822)

Data Views

  • DataViews: Full type the dataviews package. (61854)
  • DataViews: Remove non-used file. (61853)
  • DataViews: Remove unnecessary dependency for pattern fields memo. (61870)
  • DataViews: Type all the filters components. (61795)
  • DataViews: Type the BulkActionsToolbar component. (61673)
  • DataViews: Type the ViewActions component. (61729)
  • DataViews: Type the ViewTable component. (61682)

Block Library

  • Added unit testunit test Code 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 post excerptExcerpt An 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. block render function. (43451)
  • Avoid using component naming conventions for non-component code. (61793)
  • Button: Fix ESLint warning. (62126)
  • Remove CSS hack for Internet Explorer 11. (62043)
  • Remove useless styles. (62017)
  • Search Block: Fix borderRadius mutation. (61794)

Site Editor

  • History: Add getLocationWithParams method. (61823)
  • Navigation Focus Mode: Remove leftover code. (61897)
  • Remove useless onClick handler. (61902)
  • Update to use the EditorInterface component from the editor package. (62146)

Block hooks

  • Navigation block: Check for insert_hooked_blocks_into_rest_response iโ€ฆ. (62134)
  • Navigation block: Check for update_ignored_hooked_blocks_postmeta in coreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress.. (61903)

Font Library

  • Font Library Modal: Remove some contexts. (62042)

Post Editor

  • Template Actions: Fix console error when resetting template. (61921)

Global Styles

  • Components: Fix React Warning triggers by the new JSX transform. (61917)

Interactivity API

  • Interactivity API : Refactor interactivity-router to TS. (61730)

CSS & Styling

  • Fix editor view mode canvas shadow. (61688)

Tools

  • Build: Use globalThis over process.env and enable TS lib checking. (61486)

Testing

  • E2E: Fix canvas waiter in visitSiteEditor. (61816)
  • PaletteEdit: Fix another flaky test. (61818)
  • PaletteEdit: Fix flaky test. (61791)
  • Shadow: Add unit tests for shadow support. (60063)
  • Skip flaky โ€˜Zoom outโ€™ end-to-end test. (61925)
  • Synced Pattern: Wait for pattern creation in end-to-end tests. (62174)
  • Tests: Change how directives processing gets disabled. (62095)
  • Workflows: Try a backport changelog. (61785)

Build Tooling

  • Add 60 minute timeout to performance job. (61957)
  • Enable parallel processing for PHPCSPHP Code Sniffer PHP Code Sniffer, a popular tool for analyzing code quality. The WordPress Coding Standards rely on PHPCS. sniffssniff A module for PHP Code Sniffer that analyzes code for a specific problem. Multiple stiffs are combined to create a PHPCS standard. The term is named because it detects code smells, similar to how a dog would "sniff" out food.. (61700)
  • Fix an issue causing wp-scripts commands to fail if the file path contained a space character. (61748)
  • React: Upgrade to the new JSX transform. (61692)
  • Workflows: Test to check for label and skip backport changelog. (61808)

Various

  • Inserter: Encapsulate styles for tablist and close button. (61760)
  • Update โ€˜Add templateโ€™ screen to prefer template_name label instead of singular_name. (60367)
  • Update: Move pattern actions to the editor package. [take 2]. (61612)

Global Styles

  • Update copy for color variations from โ€œPresetsโ€ to โ€œPalettesโ€. (62147)

Synced Patterns

  • Remove IS_GUTENBERG_PLUGIN check to ensure pattern overrides ship in 6.6. (62011)

npm Packages

  • Packages: Increase the minimum required Node.js version to v18.12.0. (61930)

Layout

  • Update child layout selector to match core. (61777)

Components

  • Introduce Combobox expandOnFocus property. (61705)

First time contributors

The following PRs were merged by first time contributors:

  • @akashdhawade2005: Fix: Block library README.md link. (62081)
  • @amitraj2203: Added Bluesky icon to the Social Icon Block. (61372)
  • @dbrian: Add JSDoc to PostVisibility, PostVisibilityCheck, and PostVisibilityLabel. (61735)
  • @gemkev: Update tutorial.md. (62054)
  • @kellenmace: Fix an issue causing wp-scripts commands to fail if the file path contained a space character. (61748)
  • @narenin: Fixed: Custom HTML Block should display content in LTR layout for all languages. (62083)
  • @nateinaction: Add documentation for the EditorProvider and ExperimentalEditorProvider components. (61739)
  • @paolopiaggio: Playwright end-to-end Utils: Add fullscreenMode option to createNewPost. (61766)
  • @sanjucta: Add docblock to PostTitle and PostTitleRaw component. (61740)
  • @vipul0425: Fix: The latest post block โ€“ post titles overlapping. (61356)

Contributors

The following contributors merged PRs in this release:

@aaronrobertshaw @abhi3315 @afercia @ajlende @akashdhawade2005 @akasunil @Aljullu @amitraj2203 @andrewserong @anton-vlasenko @anver @artemiomorales @carolinan @cbravobernal @colorful-tones @creativecoder @DaniGuardiola @DAreRodz @dbrian @draganescu @ellatrix @fabiankaegy @fullofcaffeine @gemkev @geriux @glendaviesnz @gziolo @jameskoster @jasmussen @jeryj @jorgefilipecosta @jsnajdr @kellenmace @kevin940726 @kt-12 @madhusudhand @Mamaduka @mattsherman @mcsf @michalczaplinski @mirka @narenin @nateinaction @ndiego @ntsekouras @oandregal @ockham @paolopiaggio @ramonjd @retrofox @richtabor @sanjucta @SantosGuillamot @scruffian @senadir @shail-mehta @sirreal @stokesman @t-hamano @talldan @taylorgorman @tellthemachines @tjcafferkey @twstokes @tyxla @vcanales @vipul0425 @westonruter @WunderBart @youknowriad

Props to @annezazu, @gziolo, @aaronrobertshaw for their support in and @joen for his help with the postโ€™s assets!

#block-editor, #core-editor, #gutenberg, #gutenberg-new

Proposal: Bits as dynamic tokens.

A proposal for starting to introduce Bits (dynamic tokens/placeholders) into WordPress.

When Blocks came into the scene Shortcodes were largely abandoned, but Shortcodes had value. They had many problems, but they also had value. It wasnโ€™t clear at the time how to bring them back without bringing back many of the problems they brought with them, namely issues surrounding ambiguity in parsing, nesting, changing the page in dramatic ways, and providing usable content in the absence of a required pluginPlugin A plugin is a piece of software containing a group of functions that can be added to a WordPress website. They can extend functionality or add new features to your WordPress websites. WordPress plugins are written in the PHP programming language and integrate seamlessly with WordPress. These can be free in the WordPress.org Plugin Directory https://wordpress.org/plugins/ or can be cost-based plugin from a third-party. or theme.

Around two years ago a discussion was started for introducing dynamic tokens in the editor as placeholders for externally-sourced content. The idea was raised before the discussion was started: many developers were starting to introduce unique code in multiple blocks and plugins that looked for ways to find and replace content in the editor:

  • Set an image URLURL A specific web address of a website or web page on the Internet, such as a websiteโ€™s URL www.wordpress.org to the postโ€™s featured imageFeatured image A featured image is the main image used on your blog archive page and is pulled when the post or page is shared on social media. The image can be used to display in widget areas on your site or in a summary list of posts..
  • Insert a placeholder for a subscriberโ€™s name in an email form.
  • Add the post authorโ€™s display name in a query loopLoop The Loop is PHP code used by WordPress to display posts. Using The Loop, WordPress processes each post to be displayed on the current page, and formats it according to how it matches specified criteria within The Loop tags. Any HTML or PHP code in the Loop will be processed on each post. https://codex.wordpress.org/The_Loop template.
  • Write a translatable string in a theme template inside the Site Editor.

When the HTMLHTML HyperText Markup Language. The semantic scripting language primarily used for outputting content in web browsers. APIAPI An API or Application Programming Interface is a software intermediary that allows programs to interact with each other and share data in limited, clearly defined ways. started developing it changed the game for these kinds of dynamic tokens. Previously the discussion was largely blocked by finding a syntax that would be reasonable for someone to type in directly, but also avoid causing all sorts of breakage to the surrounding HTML. Now, these discussions are less relevant because the HTML API provides a way to find various kinds of placeholders and then ensure a context-aware replacement and escaping when replacing them.

It provides a way for WordPress to make heuristics-based decisions on what content to allow and not to allow on output. It ensures that the output of one of the tokens doesnโ€™t bleed into or break the page around it.

After many explorations, one form of placeholders stands out above all the others โ€“ a quirk in the HTML specification referred to within WordPress as a โ€œfunky comment.โ€ These look like closing tags, except the tagtag A directory in Subversion. WordPress uses tags to store a single snapshot of a version (3.6, 3.6.1, etc.), the common convention of tags in version control systems. (Not to be confused with post tags.) name is invalidinvalid A 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.. When a browser sees them they interpret them as HTML comments, removing them by default from the page (in the case that the server fails to replace them), and itโ€™s impossible to nest them.

These funky comments are the perfect vehicle for safe fallback, human-typability, and the ability to parse and replace. While funky comments can appear in many forms, this proposal is discussing the specific form that can be used for dynamic tokens and placeholders: these are called Bits. While blocks represent rich content types, Bits represent small semantic bits of knowledge. Bits can appear in any blockBlock Block is the abstract term used to describe units of markup that, composed together, form the content or layout of a webpage using the WordPress editor. The idea combines concepts of what in the past may have achieved with shortcodes, custom HTML, and embed discovery into a single consistent API and user experience. or in any HTML without requiring any changes to any existing Block code; Bits can appear anywhere.

What is a Bit?

<//wp:post-meta key="isbn">

A Bit is a small token of semantic meaning. It references content sourced beyond the post or content in which itโ€™s found. It could refer to metadata about a post, a post metaMeta Meta 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. field, a stock price sourced from an API call, a countdown to a particular date, the local time of a given timestamp in the readerโ€™s timezone, a plugin URL, a view counter, a render for a math formula, or any other bit of knowledge that is provided by the server when rendering a post.

Bits are a form of horizontal composition. Blocks donโ€™t need to know about Bits for someone to use Bits. Bits are a form of user control: anyone can add a Bit into their post without needing a developer to adjust their Blocks or theme first.

Bits are like blocks in that they comprise a name and a set of attributes, but unlike Blocks, Bits cannot nest. They are the inline analogue to block-oriented Blocks. Bits can provide some HTML, but not much. Bits are configurable by their attributes: a post date can be configured to display as โ€œMay 22โ€ or โ€œ2010/05/22.โ€

Bits are registered both in PHPPHP The web scripting language in which WordPress is primarily architected. WordPress requires PHP 7.4 or higher and also inside the editor. Thereโ€™s an inspector panel for configuring a Bit based on the registration with semantic-specific controls, but Bits can also be manually typed from the visual view of the editor, and it will recognize them once typed.

Bits can be found in various contents, including plaintext and markup contexts. Bit implementations must provide both of these outputs, as well as a fallback so that they can provide some meaningful value when the necessary rendering code is missing. For example, a Bit providing a URL will might URL-encode it for URL attributes, but leave non-ASCII unicode characters in place for display purposes; a post date might return a standardized string timestamp for plaintext context but a <span>-annotated human-readable date for better CSSCSS Cascading Style Sheets. styling in markup contexts.

<!-- stored in a post -->
<time datetime="<//wp-bit:post-date format='RFC9557'>"><//wp-bit:post-date format="human-diff"></time>

<!-- rendered to the reader -->
<time datetime="2024-05-22T12:00:00+00:00">eighteen days ago</time>

Bits are parsed just like any other HTML closing tag except: the โ€œtag nameโ€ cannot start with a-z; they extend from the start of the โ€œtag nameโ€ until the very first > (even if itโ€™s inside a quoted value). The attributes are parsed just like HTML attributes, meaning that there can be unquoted, single-quoted, and double-quoted attributes. The only caveat is that when found inside an HTML attribute, the quoting cannot conflictconflict A conflict occurs when a patch changes code that was modified after the patch was created. These patches are considered stale, and will require a refresh of the changes before it can be applied, or the conflicts will need to be resolved..

How do humans interact with Bits?

The editor has two inherent view modes for Bits: a preview mode, and a token mode. The Preview mode may show a preview of the replaced value of the Bit where itโ€™s found, and it may indicate that the Bit is there through some visual indication or otherwise. The token mode shows the Bits as placeholders indicating which kind of Bit they are.

An example of how a bit might look in token mode in the editor, clearly showing the type and configuration.
An early exploration of an ISBN post-meta bit from @ellatrix, in the editorโ€™s preview mode.

Bits are designed so that someone who is used to working with them can enter them directly as text, but people wonโ€™t need to know anything about their syntax in order to use them. Bit registration in the editor provides a name, a description, and some additional metadata just like Blocks to make it possible to provide a discoverable system for finding and configuring them.

The Bits inserter appears when typing //. Whereas the slash inserter shows Blocks on a single /, if someone types a second, they will instead see a list of Bits that will auto-filterFilter Filters are one of the two types of Hooks https://codex.wordpress.org/Plugin_API/Hooks. They provide a way for functions to modify data of other functions. They are the counterpart to Actions. Unlike Actions, filters are meant to work in an isolated manner, and should never have side effects such as affecting global variables and output. as they continue to type. The // for the slash inserter corresponds to the Bit syntax <//wp-bit:core/hello-dolly>.

Bit registration in the editor also provides an optional configuration panel akin to Block Inspector controls. Since each Bit carries its own semantics, these controls guide authors into how to configure Bit, maybe by selecting formatting options, choosing an associated post ID (by searching for its title), or choosing which of several options to enable.

What about Block Bindings?

Bits and Block Bindings are related but complementary systems. While Block Bindings can be thought of primarily as a developer-oriented API, where a developer can open up a given block or a subset of a blockโ€™s attributes to be replaced by some other source of data, Bits are primarily author-oriented, giving end-users the ability to add sourced content anywhere.

There is likely a large overlap in the kinds of data sources that power each system. Ideally, the registered sources will be compatible with both.

Proposal

The HTML API already introduced the concept of a โ€œfunky comment,โ€ which is the tag closer with an invalid tag name. For WordPress 6.6 this document is only proposing to unlock storing the funky comments in CoreCore Core is the set of software required to run WordPress. The Core Development Team builds WordPress. so that GutenbergGutenberg The Gutenberg project is the new Editor Interface for WordPress. The editor improves the process and experience of creating new content, making writing rich content much simpler. It uses โ€˜blocksโ€™ to add richness rather than shortcodes, custom HTML etc. https://wordpress.org/gutenberg/ the plugin can experiment with various prototypes of the Bit system with its full lifecycle. Currently this requires combining a Gutenberg patchpatch A 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. and a Core patch.

The only thing required for WordPress 6.6 is a big-fix to existing code, which would be useful even if Bits donโ€™t come to be, and even if they use a different syntax: WordPress attempts to separate HTML comments from other tags, but itโ€™s unaware of the myriad ways that invalid HTML turns into comments. Core-61009 introduces a patch that makes Core more aware of a couple new types of syntax-turned comments.

By opening up the ability to store Bits in the database, it makes it easier to start exploring Bits as a broader system, including what ought to be built an how. Until then, it remains cumbersome. Even in the case that Bits use a different syntax, this patch is still improves WordPressโ€™ understanding of HTML.


With the ability to store Bits in the database, work should progress rapidly during the WordPress 6.7 development cycle, building up editor flows to discover, configure, and render Bits. Work will be explored in Core for registering them on the backend, and it will likely work together with a system for HTML templating powered by the HTML API.


For future releases and design, your feedback is invited in defining the interfaces for registering, displaying, interacting with, and governing Bits.

Acknowledgements

Thanks to @annezazu, @antonvlasenko, @ironprogrammer, @ellatrix, and @gziolo (and anyone else I forgot) for review and feedback on this post before publishing.