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 the bug tracker.
Creating a 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 by the repository owner. https://github.com/ team for contributors to provide early feedback on features through calls for testing.
During the discussion the problem came up how to connect developer working on WordPress features with extenders or agency developers. One suggested way is to create a new subteam in the WordPress GitHub organization called “Outreach”. This team is public and allows anyone on GitHub to use the @wordpress/outreach handle to 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.” the people in the listed there and ask them for feedback or testing. Similar groups are already available for “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. Themers” “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)”. If you are interested in being part of the group, notice that in the comment and share your GitHub account.
This handle should be used to raise any issues or pull requests where someone is looking for feedback / testing. So if you are working on a feature and are hoping to get so me additional insights from a diverse set of users from different backgrounds, please don’t hesitate to ping this group.
Working with the testing team to organize smaller, more manageable calls for testing.
The two test team reps, @webtechpooja and @ankit-k-gupta will add a discussion to their next meeting of the test team on Feb 27, at 11 UTC. If you are a contributor interested in putting user call for testings together, you might want to join in the meeting.
Encouraging engineers to use the Outreach channel for feedback on new features earlier in development.
Contributors felt that sometimes soliciting input before a feature is fully merged and pushed to a 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., it could use additional feedback from extenders and agencies. As example: Pattern overrides that don’t have a theme component and don’t alleviate the pain point that there is no way for theme developers to bundle synch patterns with overrides with their themes.
The information around new features or enhancements is not always easy accessible. There is a need to have an ongoing exchange between the engineering teams, test team and outreach contributors to determine the right timing for calls for testing.
Creating a wishlist for each upcoming release to gather input on user priorities.
This is referring to a post made before WordPress 6.4 WordPress 6.4: What’s on your wishlist? More research is required. It also overlaps with the Extensibility Issues Triage initiative that meets once a month to look at issues that concern extensibility and could be pushed forward. Next meeting March 14, 2024, at 12:00 UTC in #core-editor channel
The goal is to make the outreach program more accessible and sustainable, improve collaboration across teams, and help guide WordPress development through early and ongoing user and contributor input.
Curated agenda and facilitation: props to @joemcgill
Announcements
WordPress 6.5 Beta 2 was released on February 20, 2024. Thanks to everyone involved and who came to help test.
Gutenberg 17.8 release is planned for Feb 28, 2024. Please help test.
Forthcoming Releases
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.: 6.5
@marybaum shared that there is a Hallway Hangout planned for the same day as the 6.5 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 release, next week. To help with a smooth release process in order to avoid a scheduling conflictconflictA 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., she asked for volunteers for committing and Mission Control (MC). @audrasjb, @swissspidy, @davidbaumwald all agreed to be available with @hellofromtonya saying that she’ll be available to help during RCs
@joemcgill reminded everyone that we are 2 weeks away from 6.5 RC1, and dev-notes should be published as soon as possible to be included in the Field GuideField guideThe field guide is a type of blogpost published on Make/Core during the release candidate phase of the WordPress release cycle. The field guide generally lists all the dev notes published during the beta cycle. This guide is linked in the about page of the corresponding version of WordPress, in the release post and in the HelpHub version page..
The documentation team has this this project board that is being used to track dev-notes.
This report on Trac shows that there are additional tickets marked with needs-dev-note.
@swissspidyexpressed concern that the process for 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, 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. is not clear this release, which led to some further discussion. @joemcgill pointed out that we should be following the process included in the handbook, or making sure that it is updated to be accurate.
Discussions
Check in on the recent experimental format for Dev Chats, specifically to not share highlighted posts during the meeting and instead focus on discussion of an open proposal. (Slack link)
To summarize the main topics that were raised during that discussion:
Overall, response to the new format is positive.
@jorbin suggested “for Alpha time, it was fantastic. I wonder if it would make sense to move more towards a focus of “How can we help the next release” during beta/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). and then come back to the proposals”.
@joemcgill agreed to prioritize release discussion over proposals during the rest of this release cycle.
@joemcgill asked for feedback on how to ensure we’re choosing the most useful topics for discussion
@jeffpaul: Seems there’s a backlog of things we could continue to pull from the Community Summit posts?
Action: propose a way for us to collect and nominate priorities for future discussions.
If you have additional ideas for topics that should be discussed in future meetings, or ideas for how to better organize/prioritize topics for discussion, please share in the comments.
Highlighted posts
The full list of posts from the last week in coreCoreCore is the set of software required to run WordPress. The Core Development Team builds WordPress. can be read on the agenda at this link.
Also, from last week’s agenda, this section provides updates on the core-editor and the Developer blog, including the latest topics that need writers.
Open floor
@costdev provided an update 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. Dependencies feature for 6.5.
Key updates:
Auto-deactivation of plugins with unmet dependencies, all bootstrapping logic, and the plugin_data option have been removed, and Plugin Dependencies now mostly runs on plugins.php and plugin-install.php.
This significantly reduces the footprint of Plugin Dependencies, removes the risk of the database and cache becoming out-of-sync on high traffic sites, and resolves a concern about consent-less deactivation of plugins.
An 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) issue has been fixed.
Plugin updates on plugins.php were failing due to some JSJSJavaScript, a web scripting language typically executed in the browser. Often used for advanced user interfaces and behaviors. that I had not guarded correctly. This has been fixed.
Most of the remaining work is on messaging, and is making steady progress (PRs in re-review stage).
Here’s a summary of where things stand with each ticketticketCreated for both bug reports and feature development on the bug tracker., which we’ll also be posting the meeting summary on Make/Core following this evening.
The live meeting will focus on the discussion of proposals and releases, updates on 6.5, and have an open floor section.
Additional items will be referred to in the various curated agenda sections, as below. If you have ticketticketCreated for both bug reports and feature development on the bug tracker. requests for help, please do continue to post details in the comments section at the end of this agenda.
Announcements
WordPress 6.5 Beta 2 was released on February 20, 2024. Thanks to everyone involved and who came to help test.
Gutenberg 17.8 RC release is planned for today, stable release scheduled for Feb 28, 2024. Please help test.
Forthcoming releases
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.: 6.5
Updates from the release squad can be shared in the Dev Chat.
Call to test 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. versions of the release as they come out.
Call for Testers early draft for 6.5. Discussion 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/ if you are able to help. Update – this is now closer to finalization and open for final comments.
Discussions
Check in on the experimental format we’ve been using for these meetings. has discussion on open proposals been effective? Are there topics that have not been covered that you’d like to see included?
Could you help curate a Call for Volunteers to review the open proposals on Make/Core and create a list of unresolved ones to discuss during Dev Chat meetings?
Tickets for 6.5 will be prioritized. Please include detail of tickets / PR and the links into comments, and if you intend to be available during the meeting if there are any questions or will be async.
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 February 12 and February 19, 2024.
23 commits
43 contributors
81 tickets created
13 tickets reopened
88 tickets closed
TicketticketCreated for both bug reports and feature development on the bug tracker. numbers are based on the Trac timeline for the period above. The following is a summary of commits, organized by component and/or focus.
Code changes
Build/Test Tools
Ignore src/wp-content/fonts from version controlversion controlA version control system keeps track of the source code and revisions to the source code. WordPress uses Subversion (SVN) for version control, with Git mirrors for most repositories. – #60337
Remove more unnecessary direct dependencies – #59658
Use assertSame() in WP_Query tests involving ::$max_num_pages property – #58683, #59655
Use assertSame() in get_comment_pages_count() tests – #58683, #59655
Bundled Themes
Twenty Nineteen: Update selectors used to change the primary color in the 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. – #59922
Twenty Twenty-Four: Increase the color contrast of the Ember style variation – #60459
Support 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. typography options in Twenty Twenty-One – #57854
Canonical
Limit post types searched by redirect_guess_404_permalink() – #59795
Rename admin_canonical_urlfilterFilterFilters 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. to wp_admin_canonical_url – #59545
Coding Standards
Allow $newlineEscape parameter in WP_Text_Diff_Renderer_inline::_splitOnWords() – #59650
Docs
Various improvements and corrections to inline documentation – #59651
Editor
Check PHPPHPThe web scripting language in which WordPress is primarily architected. WordPress requires PHP 7.4 or higher 8.1.12 for woff/woff2 mime types in WP_Font_Utils – 60536
Merge uses_context defined by block bindings sources with block types – #60525
Prevent PHP warning when parsing duotone hue values – #59496
Interactivity 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.: Skip instead of bail out if HTMLHTMLHyperText Markup Language. The semantic scripting language primarily used for outputting content in web browsers. contains SVG or MATH – #60517
Interactivity API: Use string instead of object in data-wp-interactive attribute – #60542, #60356
General
Consistently cast return value to int in functions that use ceil() – #58683
Further improve language in SimplePie code comments – #60247
I18Ni18nInternationalization, or the act of writing and preparing code to be fully translatable into other languages. Also see localization. Often written with a lowercase i so it is not confused with a lowercase L or the numeral 1. Often an acquired skill.
Prevent incorrect language dropdown entries when there are .l10n.php files – #59656, #60553
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/
Clarify documentation for methods and filters relating to REST API search endpoints – #59651
View the kickoff post, the status update post, and the Trac ticket for the Interactivity 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..
Purpose & Goals
Currently, 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. authors implement their chosen 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 frameworks (or vanilla JSJSJavaScript, a web scripting language typically executed in the browser. Often used for advanced user interfaces and behaviors.) to enhance user experiences on WordPress sites. There is no consistency or standardized pattern for developing frontend JavaScript in WordPress.
The Interactivity API provides a standard way for developers to add interactions into the frontend of their blocks.
The API has been designed and created with these requirements:
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.-first and PHPPHPThe web scripting language in which WordPress is primarily architected. WordPress requires PHP 7.4 or higher-first. Prioritizing blocks for building sites and server side rendering for better SEO and performance. Combining the best for user and developer experience.
Backward compatible. Ensuring compatibility with both classic and block themes and optionally with other JavaScript frameworks, though it’s advised to use the API as the primary method. It also works with 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 internationalization.
Declarative and reactive. Utilizing declarative code to define interactions, listening for changes in data, and updating only relevant parts of the DOM accordingly.
Performant: Optimizing runtime performance to deliver a fast and lightweight user experience.
Send less JavaScript. Reduce the overall amount of JS being sent on the page by providing a common framework that blocks can reuse. So the more that blocks leverage the Interactivity API, the less JS will be sent overall.
A live demo of what can be achieved was announced in the State of the WordState of the WordThis is the annual report given by Matt Mullenweg, founder of WordPress at WordCamp US. It looks at what we’ve done, what we’re doing, and the future of WordPress. https://wordpress.tv/tag/state-of-the-word/..
In WordPress 6.4,the Image, Search, File, Navigation, and Query coreCoreCore is the set of software required to run WordPress. The Core Development Team builds WordPress. blocks were refactored using the private version of the Interactivity API, addressing 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) issues and adding the long-time expected lightbox (or “expand on click”) feature for images.
The development has been done 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/, using a Tracking Issue to monitor progress and a Discussions category to solicit feedback and offer guidance to developers who assisted in testing.
Implementation Details
The Interactivity API is a standard system of directives, based on declarative code, for adding frontend interactivity to blocks.
Directives are special HTMLHTMLHyperText Markup Language. The semantic scripting language primarily used for outputting content in web browsers. attributes that tell the Interactivity API to attach a specified interaction to a DOM element or to transform it, similar to HTMX or AlpineJS. Using HTML as the templating language enables the API to understand the directives both in the server (PHP) and in the client (JS).
As part of this project, and all the interactivity scripts are now implemented leveraging the new script modules which are also shipping in WordPress 6.5. All of them will only be loaded on the frontend if at least one interactive block is present, to avoid sending unnecessary JavaScript to the frontend.
Here is an example of an interactive block, with a JavaScript file in charge of increasing or decreasing a counter, and a PHP file in charge of counter initialization and rendering.
For developers looking to get started, there is a Getting Started guide available, with plans to transition it to a handbook in the near future.
Additionally, a detailed 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, 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. will be released, providing further insights into utilizing the API and understanding its internal workings.
JavaScript modules have transformed the way developers write and organize JavaScript code. They provide a cleaner and more modular architecture, making code easier to maintain, test and reuse across projects.
With the addition of native support for registering and enqueueing JavaScript modules, WordPress can keep pace with web development by using efficient, effective and battle-tested methods to handle JavaScript libraries and their dependencies.
There will be another dev note about JavaScript Modules and a guide to use them.
The Interactivity API is intended to be a long-term project with future enhancements; feedback is highly welcome. The best way to reach out is via GitHub Discussions.
Code and documentation contributions are also welcomed, and the Gutenberg repository is the place to go.
Some examples of contributing could be:
Test the Interactivity API, create your own interactions, and share feedback about what you like and you don’t.
Suggest new features to include in the API.
Help creating tutorials or share demos that can inspire other people.
Spread the word
The more developers who use Interactivity API in their projects, the more consistency there will be in the WordPress ecosystem, and the less JavaScript will be sent to the world!
Feel free to spread the word about the Interactivity API in social media and events with your colleagues, friends, and everyone!
Migrating your site to WordPress or exporting all your content from WordPress should be possible in one click.
This is the big picture and what we’re aiming for. One-click. No worries.
It will be an iterative journey to get there, working with the intricacies of different platforms, finding ways to liberate content from walled gardens, and combining them all.
I often hear about folks across the WordPress community duplicating efforts when creating scripts and workflows to move users to WordPress. Imagine if we shared those resources instead and built community-owned plugins that anyone could use!
But it should be more than plugins; workflows, tutorials, and helper scripts should be shared, too. I want this resource to have space to include moving from social networks, moving from a page builder to coreCoreCore is the set of software required to run WordPress. The Core Development Team builds WordPress. blocks, switching from classic to blocks, and improving WordPress current canonical plugins for importing.”
This is a huge opportunity and a broad scope of things to contribute towards. Any of the items mentioned above would be valuable, so I also want to highlight some specific things that would be great for us to work on as a community and where you can contribute with your thoughts.
Migrating from [Platform of your choice] to WordPress
Currently, migrating content from another platform can vary from simple (WXR exports for the win!) to complex (manually editing CSV files) to impossible.
MigrationMigrationMoving the code, database and media files for a website site from one server to another. Most typically done when changing hosting companies. solutions combine community plugins, proprietary plugins, guides, tips, and scripts. What can we, as a community, do to bring all of those together into a single solution for end users? Or, at the very least, a suite of solutions that end users can access from a single place, quickly finding the one that suits their needs?
Both the proposals mentioned above are promising and would benefit from further discussion – add your thoughts!
Got a tool to help with migrations that you’d like to open up to the Community? You can open a discussion or even just submit it!
Improving WordPress’ Import/Export format (WXR)
Currently, the WordPress eXtended RSS format (WXR) is used to import and export WordPress sites. It has also been adopted by other platforms (including Squarespace and Drupal) as a de facto standard for content portability.
There is plenty of room for improvement with the format (or to investigate other export format options) that are powerful, open, and accessible.
An important part of Data Liberation is to provide pathways for users who want to move to modern WordPress core blocks or between third party editors.
Many third-party tools and builders have blocks and features that aren’t matched in Core blocks, making it a tricky choice for those who would prefer to use 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. Thankfully, this proposal to introduce a directory of standalone ‘core’ blocks could help.
While the end goal is for a ‘one-click’ solution to migrate to WordPress, there will definitely be cases (for now, at least) that will involve some manual work for users.
For these situations, work has started on simple, easy-to-follow guides that walk users through the steps to liberate their content in order to import it into WordPress. Even as the community develops tools, these guides will remain an important alternative.
In addition to the items mentioned above, I’m interested in hearing from the community about their broader thoughts and feelings about the Data Liberation initiative.
What is missing from this post that you’d like to see considered?
With such a broad scope, what should be focused on with the highest priority?
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.: 6.5
@marybaum made another request this week for contributors to fulfill roles of Mission Control, CommittercommitterA developer with commit access. WordPress has five lead developers and four permanent core developers with commit access. Additionally, the project usually has a few guest or component committers - a developer receiving commit access, generally for a single release cycle (sometimes renewed) and/or for a specific component., Security, and MarComms for the release parties.
@webcommsat asked if there was an update on scheduled bugbugA bug is an error or unexpected result. Performance improvements, code optimization, and are considered enhancements, not defects. After feature freeze, only bugs are dealt with, with regressions (adverse changes from the previous version) being the highest priority. scrubs during the betaBetaA pre-release of software that is given out to a large group of users to trial under real conditions. Beta versions have gone through alpha testing in-house and are generally fairly close in look, feel and function to the final product; however, design changes often occur as part of the process. period of 6.5. In the meantime, she marked the current schedule post as sticky as requested by @oglekler.
Action: The triagetriageThe act of evaluating and sorting bug reports, in order to decide priority, severity, and other factors. leads for 6.5 can update the post with scheduled dates for 6.5
Maintenance releases
There is one ticket in the 6.4.4 milestone that is ready for back-porting. However, @jorbin advised that he does not currently expect another maintenance release before 6.5.
To summarize the main topics that were raised during that discussion:
A decision needs to be made about how to handle early loading/overriding of coreCoreCore is the set of software required to run WordPress. The Core Development Team builds WordPress. classes. This seems to be the primary concern to address.
There is some concern about the implementation requiring manual updating of the class file, though it’s acknowledged that this change that can be addressed in the future.
A request was made that the previous blocking concerns raised in the original proposal ticket should be summarized and addressed in the new ticket, or the new one closed as duplicate unless there is substantive differences in what is being proposed beyond implementation details.
This will likely need to be included early in a release cycle (WordPress 6.6 at the earliest) and will likely need support of a core committer to help shepherd into the project.
Highlighted posts
The full list of posts from the last week in core can be read on the agenda at this link.
Also, from last week’s agenda, this section provides updates on the core-editor and the Developer blog, including the latest topics that need writers.
Open floor
@costdev provided an update 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. Dependencies feature for 6.5.
We’ve been triaging and resolving some issues since commit, many of them minor and we’ve discussed some of the larger issues and are on the path to resolving those.
Note: This post was updated to add the “Third-party plugins not hosted on WordPress.orgWordPress.orgThe community site where WordPress code is created and shared by the users. This is where you can download the source code for WordPress core, plugins and themes as well as the central location for community conversations and organization. https://wordpress.org/” section. 15th February, 2024 – @costdev
View the kickoff post, the Trac ticket and the feature plugin for 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. Dependencies.
Purpose & Goals
Extensibility of WordPress through plugins and the 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.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. is one of its most beneficial features. There are many plugins that act purely as extensions of others, building functionality on top. The Plugin Dependencies feature aims to make the process of installing/activating addons (dependents) and the plugins they rely on (dependencies) consistent and easy to use.
Plugin authors are currently implementing their own ways of informing users about other plugins that they depend on. The implementations are inconsistent and sometimes incomplete. Users are often left to search for and install the other required plugins themselves.
The feature does not intend to replace the need for defensive coding within dependent plugins, or ensure version compatibility with their dependencies; nor does it seek to mitigate the vast array of potential plugin interactions. For WordPress and/or PHPPHPThe web scripting language in which WordPress is primarily architected. WordPress requires PHP 7.4 or higher incompatibilities, CoreCoreCore is the set of software required to run WordPress. The Core Development Team builds WordPress. already has handling for preventing installing, updating, or activating plugins with unmet requirements.
Implementation Details
A plugin’s dependencies can be declared by the use of a new Requires PluginsheaderHeaderThe header of your site is typically the first thing people will experience. The masthead or header art located across the top of your page is part of the look and feel of your website. It can influence a visitor’s opinion about your content and you/ your organization’s brand. It may also look different on different screen sizes. in the dependent plugin’s main file. This must contain a comma-separated list of WordPress.org slugs for its dependencies, such as jetpack (jetpack/jetpack.php is not supported). It does not support commas in plugin slugs.
Example
/** * Plugin Name: Bridge for Foo and Bar * Requires Plugins: foo, bar */
Version management support, such as providing specific minimum and maximum version numbers through the Requires Plugins header value, is not currently supported.
Requirements
Declaring a plugin dependency places the following requirements:
Bridge for Foo and Bar can only be installed once Foo and Bar have been installed.
Bridge for Foo and Bar can only be activated once Foo and Bar have been activated.
Foo and Bar can only be deactivated once Bridge for Foo and Bar has been deactivated.
Foo and Bar can only be deleted once Bridge for Foo and Bar has been deleted.
Viewing, installing and activating dependencies
In the Plugins > Add New screen, dependencies are listed in the dependent’s plugin card. Next to these is a View Details link to open a dependency’s information modal. The dependency can be installed and activated using the buttons in the modal’s footer.
Previously, the modal would close upon clicking the Install Now or Activate button. The feature makes the modal persistent, and the buttons used in the plugin cards and modal now use the same underlying markup and functionality for consistency and reduced maintenance burden.
The side effect of this shared functionality is that automatic redirection upon activating a plugin from Plugins > Add New is no longer available. This has the benefit of not redirecting a user away from the Plugins > Add New screen for each plugin, removing them from their current context. Users can therefore install and activate multiple plugins without leaving their current context.
For plugins with onboarding experiences, they often have additional logic in case a plugin is installed and activated through a tool such as WP-CLIWP-CLIWP-CLI is the Command Line Interface for WordPress, used to do administrative and development tasks in a programmatic way. The project page is http://wp-cli.org/https://make.wordpress.org/cli/, so that the user is still presented with the onboarding experience upon navigating to a screen deemed an appropriate starting place.
Automatic deactivation of dependent plugins
As currently implemented, plugins with unmet dependencies are automatically deactivated. While this was the approach suggested in initial discussions, there were valid concerns raised about this behavior after merging into trunk. These have been weighed and discussed, and a decision was made to remove this behavior.
Third-party plugins not hosted on WordPress.org
Defining plugins not hosted on WordPress.org as dependencies will enforce and display the dependencies to the user. However, there will be no ability to install the missing plugins through the UIUIUser interface changes, and these will need to be installed manually.
UI changes
The feature makes changes to the UI on two screens: Plugins > Installed plugins, and Plugins > Add New.
Dependent plugin rows now contain a list of their dependencies, linked to the respective plugin modal to install and activate the dependency.
Dependency plugin rows now contain a list of their dependents.
If a plugin has dependencies that are not installed and active, the Activate link is disabled.
If a plugin has dependents that are active, the Deactivate and Delete links are disabled.
Before
No dependents or dependencies are listed.
After
Dependents and dependencies are listed, and actions are enabled/disabled based on the status of requirements.
Plugins > Add New
The following changes are made:
If a plugin has unmet dependencies, the Install Now and Activate buttons are disabled, both in their plugin card and their plugin information modal.
Dependent plugin cards now contain a notice listing their dependencies, with a View Details link to the dependency’s information modal which contains Install Now or Activate buttons based on their current installation status.
Plugin information modals are now persistent after button clicks, and modal-based plugin installation and activation are now performed through AJAX directly within the modal.
Before
Plugin card with no dependencies listed and an active Install Now button despite unmet dependencies.
After
Plugin card with dependencies listed with modal links to install and activate each dependency, and the “Install Now” button disabled while dependencies are unmet.
User Testing
The feature team released calls for testing in October 2022 and March 2023. Additional user testing was performed during design and technical feedback with reports on the ticket and in the #core-upgrade-installSlackSlackSlack is a Collaborative Group Chat Platform https://slack.com/. The WordPress community has its own Slack Channel at https://make.wordpress.org/chat/ channel up to the day of commit.
Outcomes
Based on responses to calls for testing, and design and technical feedback, the following UI changes were made:
Adminadmin(and super admin) notices for each unmet dependency were reduced to a single notice informing the user that there were plugins with unmet dependencies.
A dedicated Dependencies tab was removed from the Plugins > Add New screen in favour of an integrated solution in plugin rows on Plugins > Installed plugins and plugin cards on Plugins > Add New.
The plugin row on Plugins > Installed plugins had a Manage Dependencies action link removed, which linked to the removed Dependencies tab.
Messaging was improved to inform the user about missing dependencies.
Security
A security review was performed by @costdev during the development of the feature following WordPress security best practices of escaping output, sanitizing input (slugs, POST, etc.), verifying AJAX referrers and using nonces where appropriate. Comparisons were also done with existing functionality to avoid missed opportunity for hardening the feature.
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)
The feature was reviewed by the team for accessibility concerns. In addition, @costdev reached out to @joedolson regarding the use of links (<a>) as buttons, rather than <button> elements.
It was deemed that this approach, though likely not ideal, is consistent with the patterns throughout the code base today. A wider conversation is needed before a decision can be made about this specific accessibility pattern at a later date.
wp.a11y.speak() is implemented where appropriate in 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, consistent with prior functionality in Core.
Unit Tests
In addition to user testing, testing by Core developers, and the feature team, unit tests have been written for the feature and the public API is covered. There are plans to continue increasing test coverage during the 6.5 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. period.
“What’s new 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/…” 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.
This cycle is packed with enhancements and 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. fixes ahead of the next WordPress 6.5 release. Multiple performance improvements, refinement of the Link Control UIUIUser interface, Shadow support for the columns, and image blocks are good examples of what this new Gutenberg release is bringing.
The effects panel is now available for the Columns, Column, and Image blocks, allowing users to add shadow effects to them.
Now, users can effortlessly apply shadow effects to these blocks, building upon the functionality previously exclusive to the Button 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.. This opens up new creative possibilities, empowering designers to improve their layouts directly from the Editor. (57982)
Data views enhancements
This release marks the continuation of the Dataviews project, which will become a part of WordPress 6.5 for managing patterns and templates.
Additionally, a new primary filter API has been included, allowing main filters to be visible at all times in the UI. This makes it easy to switch between viewing and managing sync or unsync patterns.
Refined Link Control UI
This release includes a few enhancements to the Link Control UI. A notable addition to the interface allows the user to insert a new block instead of a link from the context of the Navigation block. Combined with the fixes from #55551, the Navigation block now will work to allow the insertion of third-party blocks, opening a new range of possibilities (57756, 57986, 58744)
Making Font Library ready for CoreCoreCore is the set of software required to run WordPress. The Core Development Team builds WordPress.
The Font Library had some important changes under the hood to prepare for its journey into WordPress Core, including security improvements and standardizing some of the code structure. Some important (and ongoing) 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 came to the Font Library Management UI in the Site Editor.
Other Notable Highlights
A proposal has been put forward to include Core blocks in the directory developed within the Gutenberg repository for convenience. Core contributorsCore ContributorsCore contributors are those who have worked on a release of WordPress, by creating the functions or finding and patching bugs. These contributions are done through Trac.
https://core.trac.wordpress.org would maintain the blocks but would be standalone instead of bundled with the block library. Please contribute to the discussion in the open issue.
Drag and Drop has been improved, allowing dragging from the block inserter into template parts (and within) and allowing dragging from the desktop to template parts (58589, 58423)
Implement Tabs in widgetWidgetA WordPress Widget is a small block that performs a specific function. You can add these widgets in sidebars also known as widget-ready areas on your web page. WordPress widgets were originally created to provide a simple and easy-to-use way of giving design and structure control of the WordPress theme to the user. editor settings. (57886)
Replace TabPanel with Tabs in the editor Document Overview sidebarSidebarA 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.. (57082)
SearchControl: Refactor to use InputControl internally. (56524)
Show borders for disabled secondary buttons. (58606)
Data Views
Add outline to template preview in table layout. (58738)
Add: Selection and bulk actions to grid view. (58144)
DataViews: Add primary 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.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.. (58427)
DataViews: In patterns page, show sync status filter by default. (58367)
Update spacing around title in grid layout. (58739)
Interactivity API
Add block supports for clientNavigation and interactive properties on block.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. schema. (58132)
Image block: Refactor and remove data-wp-body. (58835)
Follow up on the Post navigation link 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. filters. (57949)
Home Link: Render Home text if there is no attribute label present. (58387)
Apply custom scroll style to fixed 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. block toolbar. (57444)
Block Bindings: Ensure to pass bound attributes. (58844)
Commands
Try debouncing search for post-type navigation. (58810)
Document Settings
Tweak revisionsRevisionsThe 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 for improved scanning. (58751)
Synced Patterns
Support button’s link settings for Pattern Overrides. (58587)
Block API
Block 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.: Set ignoredHookedBlocks metada attr upon insertion. (58553)
List View
Add keyboard clipboard events for cut, copy, paste. (57838)
New APIs
Block API
Blocks: Add handling for block.json viewScriptModule. (58731)
Media Replace Flow: Vertically align the URLURLA specific web address of a website or web page on the Internet, such as a website’s URL www.wordpress.org. (58621)
Set post editor sidebar tabs to manual activation. (58041)
Tabs: Delay activeId updates until focus can be properly detected. (58625)
Tabs: Fix infinite loopLoopThe 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 in useEffect. (58861)
Tabs: Improve Controlled Mode Focus Handling. (57696)
DataViews: Fix nested buttons and placeholder text in list layout. (58304)
DataViews: Fix some small issues with 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.. (58371)
DataViews: Make it possible to toggle Author field in templates and template parts. (58609)
DataViews: Remove test artifact (status filter was set as primary). (58682)
Fix: Dataviews selection on patterns grid view. (58726)
Site Editor
Add context for the All translatable string and enforce l10nL10nLocalization, or the act of translating code into one's own language. Also see internationalization. Often written with an uppercase L so it is not confused with the capital letter i or the numeral 1. WordPress has a capable and dynamic group of polyglots who take WordPress to more than 70 different locales. best practices. (58196)
Hide export button if non-block-based theme. (58346)
Mobile site editor header toolbar button bugfix. (58852)
Post Editor
Editor: Don’t hide authors’ Combobox if the current author is missing. (58719)
Fix permalink input field text overflow ellipsis for Firefox. (57310)
Fix the position and size of the Options menu,. (57515)
Fix: Use old template panel if user doesn’t have access to view templates. (58485)
Template editing: Update fullscreen WP back functionality. (58534)
Interactivity API
Add supports.interactivity to the Query block. (58316)
Fix state intialization for asynchronous private stores. (58754)
Remove non-default suffix data wp context processing. (58664)
Use compat versions of HTMLHTMLHyperText Markup Language. The semantic scripting language primarily used for outputting content in web browsers. APIs. (58846)
Import Maps: Only emit CDATA wrappers for inline scripts for 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. (58818)
Extensibility
Fix broken list markup in navigation block when 3rd party blocks are used as decendants of navigation block. (55551)
Navigation block: Check Block Hooks API callback hasn’t already been added. (58772)
Synced Patterns
Disable overriding links of images inside pattern instances. (58660)
Fix nested pattern overrides and disable editing inner pattern. (58541)
Inspector Controls
Add missing PanelBody title for the columns block inspector. (58452)
Add spacing between input controls with custom values. (58410)
Custom Fields
Block Bindings: Update bindings registry with latest changes. (58843)
Editor: Ensure the current author is included in the dropdown. (58716)
Rich Text
Add aria-readonly attribute to Rich Text component. (58687)
Navigation Menus
Navigation: Update the fallback block list to avoid a PHPPHPThe web scripting language in which WordPress is primarily architected. WordPress requires PHP 7.4 or higher Warning. (58588)
Patterns
Update the bindings attribs of blocks added during experimental phase. (58483)
Distraction Free
Add default restoration of UI when exiting distraction free mode. (58455)
Block editor: selectors: Avoid has() or double get() on Maps. (58372)
Block preview: Prevent recalculating editor styles if additional styles is empty. (58244)
Image block: Remove a block editor store sub. (57232)
Inner blocks: Don’t re-render list when controlled blocks change. (58575)
InnerBlocks: Fix continuous re-rendering on inner blocks change. (58348)
Navigation: Fix performance regressionregressionA 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.. (58513)
Post template: Don’t fetch taxonomies if not needed. (58245)
Site editor: Add pattern/template load performance test with TT4. (58734)
Site editor: Avoid double post content parse (alternative). (58146)
fix: InnerBlocks schema description in block.json. (58649)
Code Quality
Avoid running pattern overrides migrationMigrationMoving the code, database and media files for a website site from one server to another. Most typically done when changing hosting companies. in WordPress core. (58487)
Build: Add package build shebang and sync comments. (58264)
Update Font Library 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/ code to align with Core standards. (58619)
Update Font Library non-REST API code to align with Core standards. (58607)
Use toBeDisabled instead of aria-disabled check. (58694)
e2e: Add a test to confirm that the focus moves from the post title to the paragraph using the enter key. (58872)
end-to-end Utils: Ensure deleteAllUsers does not delete current user. (58320)
Build Tooling
Add missing Interactivity API label to changelog script. (58879)
Enable dynamic import transform for ReactReactReact is a JavaScript library that makes it easy to reason about, construct, and maintain stateless and stateful user interfaces.
https://reactjs.org Native tests. (58546)
Fix: Remove mention of weekly meeting from first time contributor PR label. (58547)
Interactivity API: Move Core implementation to compat 6.5 folder. (58829)
Remove phpunit tests for features backported to Core. (58776)
Update Performance tests base branchbranchA directory in Subversion. WordPress uses branches to store the latest development code for each major release (3.9, 4.0, etc.). Branches are then updated with code for any minor releases of that branch. Sometimes, a major version of WordPress and its minor versions are collectively referred to as a "branch", such as "the 4.0 branch".. (58890)
Workflows: Add ‘Technical Prototype’ to the type-related labels list. (58163)
Always output core block global styles after base global styles. (58761)
BackportbackportA 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. theme.json tests from Core. (58476)
Block Library
Reduce label and fix capitalization for image block upload label. (58677)
(Update 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/ 17.7 under announcements)
The live meeting will focus on the discussion of proposals and releases, updates on 6.5, and have an open floor section.
Additional items will be referred to in the various curated agenda sections, as below. If you have ticketticketCreated for both bug reports and feature development on the bug tracker. requests for help, please do continue to post details in the comments section at the end of this agenda.
Announcements
WordPress 6.5 Beta 1 was released on February 13, 2024. Thanks to everyone involved and who came to help test.
Could you help curate a Call for Volunteers to review the open proposals on Make/Core and create a list of unresolved ones to discuss during Dev Chat meetings?
On TracTracAn open source project by Edgewall Software that serves as a bug tracker and project management tool for WordPress. between February 5 and February 12, 2024:
71 commits
245 contributors
82 tickets created
11 tickets reopened
82 tickets closed
245 contributors during this period and 28 new contributors!
Core editor improvements post. This post highlights some of the power of details in 6.5 which can transform current workflows.
For the CoreCoreCore is the set of software required to run WordPress. The Core Development Team builds WordPress. Editor side, @annezazu has called out the Gutenberg issue 58773.
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.: 6.5
Updates from the release squad can be shared in the Dev Chat.
Call to test 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. versions of the release as they come out.
Call for Testers early draft for 6.5. Discussion 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/ if you are able to help. Update – this is now closer to finalization and open for final comments.
Tickets for assistance
Tickets for 6.5 will be prioritized. Please include detail of tickets / PR and the links into comments, and if you intend to be available during the meeting if there are any questions or will be async.
You must be logged in to post a comment.