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.
Before writing a single line of code, a first-time WordPress coreCoreCore is the set of software required to run WordPress. The Core Development Team builds WordPress. contributor typically needs to install GitGitGit is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency. Git is easy to learn and has a tiny footprint with lightning fast performance. Most modern plugin and theme development is being done with this version control system.
https://git-scm.com/, Node.js, npm, Docker, configure everything correctly, and troubleshoot whatever breaks along the way. At in-person events, this alone can take hours โ sometimes the full day.
The WordPress Core Dev Environment Toolkit aims to eliminate this friction entirely.
What is it?
The WordPress Core Dev Environment Toolkit is a desktop application (available for macOS, Windows, and Linux) that sets up a full WordPress core development environment with zero prerequisites.
You install it, choose a directory for wordpress-develop, click a button, and you have:
A cloned wordpress-develop repository
A running WordPress dev server
The ability to make code changes and generate a patchpatchA special text file that describes changes to code, by identifying the files and lines which are added, removed, and altered. It may also be referred to as a diff. A patch can be applied to a codebase for testing.
No Git, no Node.js, no npm, no Docker needed. Everything is bundled inside the application as JSJSJavaScript, a web scripting language typically executed in the browser. Often used for advanced user interfaces and behaviors./WASM, powered by WordPress Playground.
Clone wordpress-develop into a directory of your choice
Run npm install, npm run build, and npm run dev automatically
Start a WordPress dev server using Playgroundโs CLICLICommand Line Interface. Terminal (Bash) in Mac, Command Prompt in Windows, or WP-CLI for WordPress.
Make changes to core files directly
Generate a patch from your changes, ready to attach to a TracTracAn open source project by Edgewall Software that serves as a bug tracker and project management tool for WordPress.ticketticketCreated for both bug reports and feature development on the bug tracker.
The entire toolchain โ npm, Node, Git โ runs as 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/WASM bundled with the app. Thereโs no terminal work required for the basic contributor workflow.
Hereโs the full setup flow โ from a fresh install to a running WordPress development environment:
Once your environment is running, generating a patch to submit to Trac takes just a few clicks:
Why this matters for Contributor Days
Environment setup has historically been one of the biggest drop-off points during Contributor Days. When participants canโt get set up in time, the session is over before it starts โ regardless of their interest or motivation.
This tool makes it realistic to go from attendee to first patch in a single afternoon. Itโs designed specifically for the Contributor Day context: fast setup, no prerequisites, no troubleshooting.
How to use it at your next Contributor Day
If youโre organizing or facilitating a core table at a WordCampWordCampWordCamps are casual, locally-organized conferences covering everything related to WordPress. They're one of the places where the WordPress community comes together to teach one another what theyโve learned throughout the year and share the joy. Learn more.:
Share the download link with participants ahead of the event so they can install it at home on good WiFi (the app is a larger download).
Walk through the setup at the start of the session: install, click to set up the environment, make a small change, generate a patch.
Point participants to the Core Contributor Handbook for guidance on what to contribute and how once theyโre set up.
Download and feedback
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/ repository and releases:https://github.com/WordPress/experimental-wp-dev-env
The tool is experimental and under active development. Feedback is welcome via GitHub issues.
If you use this tool at a Contributor Day, please share how it went โ either in the comments below or in the #core channel 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/. Reports from the field help prioritize improvements.
After aligning with @photomatt and @4thhubbard, Iโm excited to announce a call for volunteers to work on the Twenty Twenty-Seven default theme alongside @iamarinoh who has been chosen as the lead designer. Please comment below to express your interest in helping with the development of the theme.ย
As a reminder, the default theme ships with the last release of the year. For this year, that will be 7.2 which is set to be released in early December. For anyone volunteering to help, please keep this timeline in mind as it means being available to help during that timeframe in particular as well as in these early stages.ย
To set us all up for success, this call for volunteers is being shared on the early side so folks have plenty of time to get started, complete iterations, and land something wonderful for the broader community. Thanks to all who consider helping with the next default theme!
If you are interested in volunteering, please leave a comment belowby Friday, March 27th.
The live meeting will focus on the discussion for upcoming releases, and have an open floor section.
The various curated agenda sections below refer to additional items. If you haveย ticketticketCreated for both bug reports and feature development on the bug tracker.ย requests for help, please continue to post details in the comments section at the end of this agenda or bring them up during the dev chat.
The release schedule is currently still on hold, pending further validation of a new release candidaterelease candidateOne of the final stages in the version release cycle, this version signals the potential to be a final release to the public. Also see alpha (beta)..
The discussion section of the agenda is for discussing important topics affecting the upcoming release or larger initiatives that impact the CoreCoreCore is the set of software required to run WordPress. The Core Development Team builds WordPress. Team. To nominate a topic for discussion, please leave a comment on this agenda with a summary of the topic, any relevant links that will help people get context for the discussion, and what kind of feedback you are looking for from others participating in the discussion.
Any topic can be raised for discussion in the comments, as well as requests for assistance on tickets. Tickets in the milestone for the next major or maintenance release will be prioritized.
Please include details of tickets / PRs and the links in the comments, and indicate whether you intend to be available during the meeting for discussion or will be async.
My request: Letโs go back to how we used to elevate individual identity and contribution. Learn how to celebrate sponsorship in ways that encourage and cheer equally or more volunteers and people contributing in their spare time, and remember thatโs how almost all of us started and how beautiful and fun that was.
To expand a bit on what I tried to say in the Q&A, I was referring to this tweet:
Krupa, sorry to use you as an example, but the giant SELF EMPLOYED on your badge shocked me, and led me down a path of thinking of all the ways my push to get companies doing what Automattic and Yoast has created some issues in its success, and the unintended consequences itโs maybe led us to.
Iโm not saying someone deliberately created this bad badge design on purpose or maliciously, but I do want to know what led to a result here that everyone involved thought Name and Company was just fine, and no one advocated for personal info you could have on a badge, and that we have before in previous designs. I would suggest WEBSITE since weโre software trying to help people make websites, and want to encourage and promote that, then 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/ username, for same reason, maybe hometown because thatโs usually one of the first things people ask and itโs interesting. Iโd put all those things over the company, because the company for people who want to show it off is usually obvious from their shirt or buttons before you can read the badge.
@desrosj and @peterwilsoncc, Very sorry today for only being able to express disagreement in such a brief and unnuanced way. Iโd love to get a Zoom when Iโm feeling better so we can discuss and understand each otherโs positions better.
Be a good conversationalist
I know I get annoyed when the first question someone asks when you meet is โwhat do you do for work?โ Here are fun openers that are better, and how can that inspire how we experiment with badges.
Individual Complaints
I was first made aware of this issue by hearing complaints from coreCoreCore is the set of software required to run WordPress. The Core Development Team builds WordPress. WP devs who said they feel like we doing so much more to recognize the contribution of companies. Iโve heard several versions of โitโs a bigger deal for me to contribute without being paid for it!โ
Very much 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. and theme directories.
In the business model of WordCamps.
In a lot of our language and goals.
In my presentations starting probably 6-7 years ago.
Weโre measuring and celebrating inputs and contributions, not impact or results
I keep repeating this as the biggest thing we need to change in the WordPress culture and way of doing things. In hindsight, how silly is it to emphasize hours pledged in Five for the Future and not actual activity? And then check regularly if that activity is actually aligned with our goals, or perhaps working against them? (It has happened!)
When is more contribution a bad thing? How has our emphasis on participation, process, or inclusive consensus slowed us down, even as we add more people? Are we surprised, given The Mythical Man-Month figured that out in 1975! What have we lost, and who have we lost, as a result of the structure and processes weโve created?
How am I so smart yet so dumb sometimes?! ๐
Hereโs a better version. The most powerful question from Jerry Collona: โHow have I been complicit in creating the conditions I say I donโt want?โ It works so well in all parts of life.
WordPress 7.0 introduces the Connectors 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. โ a new framework for registering and managing connections to external services. The initial focus is on AI providers, giving WordPress a standardized way to handle API key management, provider discovery, and adminadmin(and super admin)UIUIUser interface for configuring AI services.
This post walks through what the Connectors API does, how it works under the hood, and what 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. developers need to know.
A connector represents a connection to an external service. Each connector carries standardized metadata โ a display name, description, logo, authentication configuration, and an optional association with a 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/ plugin. The system currently focuses on providers that authenticate with an API key, but the architecture is designed to support additional connector types in future releases.
WordPress 7.0 comes with three featured connectorsโAnthropic, Google, and OpenAIโaccessible from the newย Settings โ Connectorsย screen, making installation seamless.
Each connector is stored as an associative array with the following shape:
If youโre building an AI provider plugin that integrates with the WP AI Client, you donโt need to register a connector manually. The Connectors API automatically discovers providers from the WP AI Clientโs default registry and creates connectors with the correct metadata.
Hereโs what happens during initialization:
Built-in connectors (Anthropic, Google, OpenAI) are registered with hardcoded defaults.
The system queries the AiClient::defaultRegistry() for all registered providers.
For each provider, metadata (name, description, logo, authentication method) is merged on top of the defaults, with provider registry values taking precedence.
The wp_connectors_init action fires so plugins can override metadata or register additional connectors.
In short: if your AI provider plugin registers with the WP AI Client, the connector is created for you. No additional code is needed.
The Settings > Connectors admin screen
Registered connectors appear on a new Settings > Connectors admin screen. The screen renders each connector as a card, and the registry data drives whatโs displayed:
name, description, and logo_url are shown on the card.
plugin.file โ the value is the pluginโs main file path relative to the plugins directory (e.g.,ย akismet/akismet.phpย orย hello.php). The screen uses it to check whether the associated plugin is installed and active, and shows the appropriate action button.
authentication.credentials_url is rendered as a link directing users to the providerโs site to obtain API credentials.
For api_key connectors, the screen shows the current key source (environment variable, PHPPHPThe web scripting language in which WordPress is primarily architected. WordPress requires PHP 7.4 or higher constant, or database) and connection status.
Connectors with other authentication methods are stored in the PHP registry and exposed via the script module data, but currently require a client-side 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 registration for custom frontend UI.
Authentication and API key management
Connectors support two authentication methods:
api_key โ Requires an API key, which can be provided via environment variable, PHP constant, or the database (checked in that order).
none โ No authentication required.
The authentication method (api_key or none) is determined by the authentication metadata registered with the connector. For providers using api_key, a database setting name is automatically generated using the pattern connectors_{$provider_type}_{$provider_id}_api_key. Itโs also possible to set a custom name using setting_name property. API keys stored in the database are not encrypted but are masked in the user interface. Encryption is being explored in a follow-up ticketticketCreated for both bug reports and feature development on the bug tracker.:ย #64789.
For AI providers, there is a specific naming convention in place for environment variables and PHP constants: {PROVIDER_ID}_API_KEY (e.g., the anthropic provider maps to ANTHROPIC_API_KEY). For other types of providers, an environment variable (env_var_name) and a PHP constant (constant_name) can be optionally set to any value.
API key source priority
For api_key connectors, the system looks for a setting value in this order:
Returns an associative array with keys: name, description, type, authentication, and optionally logo_url and plugin. Returns null if the connector is not registered.
wp_get_connectors()
Retrieves all registered connectors, keyed by connector ID:
The wp_connectors_init action fires after all built-in and auto-discovered connectors have been registered. Plugins can use this hook to override metadata on existing connectors.
Since the registry rejects duplicate IDs, overriding requires an unregister, modify, register sequence:
Always check is_registered() before calling unregister() โ calling unregister() on a non-existent connector triggers a _doing_it_wrong() notice.
unregister() returns the connector data, which you can modify and pass back to register().
Connector IDs must match the pattern /^[a-z0-9_-]+$/ (lowercase alphanumeric, underscores, and hyphens only).
Registry methods
Within the wp_connectors_init callback, the WP_Connector_Registry instance provides these methods:
Method
Description
register( $id, $args )
Register a new connector. Returns the connector data or null on failure.
unregister( $id )
Remove a connector and return its data. Returns null if not found.
is_registered( $id )
Check if a connector exists.
get_registered( $id )
Retrieve a single connectorโs data.
get_all_registered()
Retrieve all registered connectors.
Outside of the wp_connectors_init callback, use the public API functions (wp_get_connector(), wp_get_connectors(), wp_is_connector_registered()) instead of accessing the registry directly.
The initialization lifecycle
Understanding the initialization sequence helps when deciding where to hook in:
During the init action, _wp_connectors_init() runs and:
Creates the WP_Connector_Registry singleton.
Registers built-in connectors (Anthropic, Google, OpenAI) with hardcoded defaults.
Auto-discovers providers from the WP AI Client registry and merges their metadata on top of defaults.
Fires the wp_connectors_init action โ this is where plugins override metadata or register additional connectors.
The wp_connectors_init action is the only supported entry point for modifying the registry. Attempting to set the registry instance outside of init triggers a _doing_it_wrong() notice.
Looking ahead
The Connectors API in WordPress 7.0 was optimized for AI providers, but the underlying architecture is designed to grow. Currently, only connectors with api_key authentication receive the full admin UI treatment. The PHP registry already accepts any connector type โ whatโs missing is the frontend integration for connectors with different authentication mechanisms.
Future releases are expected to:
Expand support for additional authentication methods beyond api_key and none.
Offer more built-in UI integrations beyond api_key.
Provide a client-side JavaScript registration API for custom connector UI.
When those capabilitiescapabilityAย 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). land, the wp_connectors_init action will be the primary hook for registering new connector types.
Props to @jorgefilipecosta, @shaunandrews, @flixos90, @westonruter, @justlevine, and others for contributing to the Connectors screen and this dev notedev noteEach important change in WordPress Core is documented in a developers note, (usually called dev note). Good dev notes generally include a description of the change, the decision that led to this change, 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..
As of WordPress 6.9, you can hide any 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. entirely withย blockVisibility: falseย in block metadata. In WordPress 7.0, viewport-based visibility rules give your users the power to show or hide blocks per device type โ desktop, tablet, or mobile โ without affecting other viewports.
Controls are available in the block toolbar, block inspector 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., and command palette to launch the block visibility options modal. In List View, blocks with active visibility rules show icons that indicate which viewports they are hidden on.
Note: Blocks hidden by viewport areย rendered in the DOM.ย The hiding happens in the CSSCSSCascading Style Sheets..
Thatโs different fromย blockVisibility: false. That keeps the block from rendering in the DOM, thus it canโt ever show on the front end.
Updatedย blockVisibilityย metadata structure
The existing hide-everywhere behavior has NOT changed:
{
"metadata": {
"blockVisibility": false
}
}
But in WordPress 7.0, a newย viewportย key gives you and your 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.-literate users finer control, per breakpoint:
Theย viewportย key is deliberately nested, leaving room for more sources (e.g., user role, time-based rules) to come in 7.1 and beyond.
The three supported viewport keys areย mobile,ย tablet, andย desktop. In 7.0 these map to fixed breakpoints, but you can expect configurable breakpoints andย theme.jsonย integration in WordPress 7.1 โ seeย #75707.
Hereโs how this all looks in serialized block markup:
<!-- wp:paragraph {"metadata":{"blockVisibility":{"viewport":{"mobile":false}}}} -->
<p>Hidden on mobile.</p>
<!-- /wp:paragraph -->
How to get your theme or 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. ready
Does your theme or plugin generate, transform, or parse block markup server-side? Then itsย blockVisibilityย metadata field might now contain a boolean (false) or an object ({ viewport: { ... } }). If your code assumes a scalar value, youโll want to update it to handle both forms.
Blocks and patterns that include hardcodedย blockVisibilityย metadata will work out of the box, and so will your reusable blocks that have visibility rules.
If your blocks donโt interact with markup on the server
Then you donโt have to do anything! Viewport visibility is part of theย blockVisibilityย block support and applies automatically. You donโt need a separate opt-in inย block.json.
Coming soon! To a future release near you
Current plans call for configurable breakpoints andย theme.jsonย integration for block visibility to land in WordPress 7.1. At that point, youโll be able to let your themes and other products define almost any viewport labels and breakpoints you need, far beyond the fixed mobile/tablet/desktop defaults. Followย #75707ย for progress.
Props to @andrewserong and @marybaum for helping to write this dev notedev noteEach important change in WordPress Core is documented in a developers note, (usually called dev note). Good dev notes generally include a description of the change, the decision that led to this change, 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..
After discussions with project leadership, the decision has been made to delay the 7.0 release by a few weeks to finalize key architectural details.
WordPress 7.0 is shaping up to be a big release, with some great highlight features and a long list of improvements. Iโm excited to get this in the hands of users. Within that context, contributors have been hard at work discussing, iterating, and polishing every detail.
One of the larger items for this release is the introduction of real-time collaboration primitives, which includes built-in support for HTTPHTTPHTTP is an acronym for Hyper Text Transfer Protocol. HTTP is the underlying protocol used by the World Wide Web and this protocol defines how messages are formatted and transmitted, and what actions Web servers and browsers should take in response to various commands. polling to ensure the widest possible reach and access to this capabilitycapabilityAย 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).. To support this system in coreCoreCore is the set of software required to run WordPress. The Core Development Team builds WordPress., a new custom table was proposed. While there was general agreement that it would be nice to have for collaborative editing and sync coordination, it was paused due to time and design uncertainties.
Due to a combination of rapid iteration around data storage solutions and cache invalidation strategies, discussions were held before RC2. This led to a path forward that addresses the outstanding concerns by continuing to store content changes in postmeta while moving awareness/presence information about users in session to transients. This approach avoids rapid and frequent cache invalidation issues with special handling for collaborative editing metaMetaMeta is a term that refers to the inside workings of a group. For us, this is the team that works on internal WordPress sites like WordCamp Central and Make WordPress. fields. Since then, Matt has expressed a preference to revisit the custom table and ensure adequate time is given to come up with the best design possible from the start. To support this, more time is being added to the 7.0 cycle to ensure the best solution for the overwhelming majority of users is included.
Additionally, there was one extra consideration raised about use cases beyond the real time support (like accommodating broader sync use cases) that should also be discussed to ensure we design the right primitives in the broadest possible sense. After getting more clarity on how a new table will look and function, a new final timeline for 7.0 will be announced. This will likely be a delay of a few weeks, as there are many features that will benefit users, and it would be counterproductive to hold them back for too long. The extra time will help ensure we can process all the feedback given so far and ensure the design can stand the test of time. New features and enhancements not already in core will not be considered for inclusion.
Overall, the intention in shipping collaborative editing in 7.0 as an opt-in is to give the WordPress ecosystem time to adapt to a major change. For hosts, this can have an impact in WordPress resource usage and database interactions. WordPress sites are generally very read-heavy, but collaborative features inherently involve a writing state that is then rebroadcast to other users. The HTTP polling mechanism as designed is a lowest-common-denominator approach, but its broad compatibility comes at the cost of relative inefficiency compared to more specialized solutions like WebSockets. Itโs important to empower site owners and hosts to have full control during this process. So, rather than enabling the feature for 100% of users on day one, the opt-in approach allows usage to ramp up organically. Hosts can monitor requests to the sync endpoints, perform profiling to ensure their particular caching and request management approaches are appropriate, etc.
Thus far, for example, WordPress.com has done extensive testing on this feature and has demonstrated that the conservative defaults, the limit on the number of collaborators, and the number of active editor sessions in the shared environment make HTTP polling a viable transport that can work on essentially any WordPress host without additional dependencies. Other hosts are encouraged to test this as well, and a call for testing will be coming to make.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//hosting after the final architecture has been committed.
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. developers, many popular plugins still rely on metaboxes for their UIUIUser interface. These plugins submit their inputs when a post is saved in the editor via 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/โs compatibility mode. This approach, on its own, is not compatible with collaborative editing, which builds on the wordpress/data package used by 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 to detect and sync changes across all users in a session, gracefully handling common types of conflicts. As a result, real-time collaboration is disabled when metaboxes are present. The 7.0 cycle will be a window in which these plugin developers can implement a bridge to make their metaboxes compatible or adopt more modern Gutenberg APIs that will instead render their UI in a way that more seamlessly integrates with the editor. Learn more in the official dev note for the feature and, for more details on migrating from metaboxes, see the Meta Boxes guide in the Block Editor Handbook.
Thank you to everyoneโs continued commitment to ensuring 7.0 is an outstanding release, both from a features and stability perspective.
Itโs nice that plugins can hook into the left nav wherever they want, but thereโs no hierarchy and things can get pretty mixed up.
Perhaps we have all the coreCoreCore is the set of software required to run WordPress. The Core Development Team builds WordPress. WP stuff first, then at the end we have plugins, and below Plugins, plugins can register a top-level left nav if they want, and all their universe can live beneath that menu item, but thereโs a clear way to get in and out of bigger ones like WooCommerce.
Being at the bottom isnโt great, but we could allow pinning or just have the most three-recently accessed plugins at the top under Dashboard, which would naturally give top billing to plugins like a LMS or ecommerce where 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. becomes the main thing people are doing with the site.
Thank you to everyone who responded to the original call for volunteers. The response was genuinely wonderful and made clear how much folks care about getting a great default theme out for 7.2. Joining lead designer @iamarinoh, Iโm happy to share that @onemaggie and @poena will serve as co-lead developers. @juanfra will be taking on a new role as lead mentor and I want to share a bit about why that role exists.
Those who read through the comments may have noticed @juanfra mentioning his interest in mentoring and sharing his Twenty Twenty-Five experience with new leads. That interest sparked a larger conversation about how to bring a more explicit mentorship focus to this new default theme effort. With a head start on this theme compared to previous years, and with an increasing focus on Education programs in WordPress to help new contributors find meaningful entry points, thereโs a real opportunity to do something more intentional here than before. Theme development is one of the more approachable and impactful areas to get involved in. As a result, the explicit mentorship angle is designed to bring more folks into the theme creation process in a structured, supported way rather than hoping people find their footing on their own. @juanfra will be taking point here but everyone working on the theme in a lead role will help make the mentorship approach a reality.ย
This goes beyond helping make Twenty Twenty-Seven a reality. Itโs about expanding who feels equipped and welcome to contribute to theme work in WordPress more broadly.
If you expressed interest and are keen to contribute, stay tuned as the mentorship angle itself is forming alongside the theme design. More on how to get involved will be shared as the theme takes shape.ย
Real-time collaboration (RTC) in 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 allows multiple users to edit content simultaneously by utilizing Yjs.
This dev notedev noteEach important change in WordPress Core is documented in a developers note, (usually called dev note). Good dev notes generally include a description of the change, the decision that led to this change, 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. covers three important aspects of the collaboration system that pluginPluginA plugin is a piece of software containing a group of functions that can be added to a WordPress website. They can extend functionality or add new features to your WordPress websites. WordPress plugins are written in the PHP programming language and integrate seamlessly with WordPress. These can be free in the WordPress.org Plugin Directory https://wordpress.org/plugins/ or can be cost-based plugin from a third-party. and theme developers should be aware of:
How metaMetaMeta is a term that refers to the inside workings of a group. For us, this is the team that works on internal WordPress sites like WordCamp Central and Make WordPress. boxes affect collaboration mode
The sync.providers 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. for customized sync transport
Common issues when building plugins that can run in a collaborative environment
Collaboration is disabled when meta boxes are present
The Problem
Classic WordPress meta boxes are not synced by the real-time collaboration system. To avoid data loss, collaboration is disabled when meta boxes are detected on a post.
What developers need to know
To allow collaboration, consider migrating meta box functionality to registered post meta with show_in_rest set to true, and use 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. plugins or block-based alternatives that read from WordPress data stores.
For example:
register_post_meta( 'post', 'example_subtitle', [
'show_in_rest' => true, // Required for syncing.
'single' => true,
'type' => 'string',
'revisions_enabled' => true, // Recommended to track via revision history.
] );
For more details on migrating from meta boxes, see the Meta Boxes guide in the Block Editor Handbook.
The sync.providers filter: Customizing the sync transport layer
Overview
The @wordpress/sync package uses a provider-based architecture for syncing collaborative editing data. By default, WordPress ships with an HTTPHTTPHTTP is an acronym for Hyper Text Transfer Protocol. HTTP is the underlying protocol used by the World Wide Web and this protocol defines how messages are formatted and transmitted, and what actions Web servers and browsers should take in response to various commands. polling provider. The sync.providers filter allows plugins to replace or extend the transport layer. For example, a plugin could switch from HTTP polling to WebSockets for lower-latency collaboration.
How it works
The filter is applied during provider initialization:
A provider creator is a function that accepts a ProviderCreatorOptions object (containing the Yjs ydoc, awareness, objectType, and objectId) and returns a ProviderCreatorResult with destroy and on methods. The destroy method is called when the provider is no longer needed, and the on method allows the editor to listen for connection status events (connecting, connected, disconnected).
Example: WebSocket provider
The following example replaces the default HTTP polling provider with a WebSocket-based transport using the y-websocket library:
import { addFilter } from '@wordpress/hooks';
import { WebsocketProvider } from 'y-websocket';
/**
* Create a WebSocket provider that connects a Yjs document
* to a WebSocket server for real-time syncing.
*/
function createWebSocketProvider( { awareness, objectType, objectId, ydoc } ) {
const roomName = `${ objectType }-${ objectId ?? 'collection' }`;
const serverUrl = 'wss://example.com/';
const provider = new WebsocketProvider(
serverUrl,
roomName,
ydoc,
{ awareness }
);
return {
destroy: () => {
provider.destroy();
},
on: ( eventName, callback ) => {
provider.on( eventName, callback );
},
};
}
addFilter( 'sync.providers', 'my-plugin/websocket-provider', () => {
return [ createWebSocketProvider ];
} );
What developers need to know
The sync.providers filter is only applied when real-time collaboration is enabled.
Return an empty array to disable collaboration entirely.
Return a custom array to replace the default HTTP polling provider with your own transport (e.g., WebSockets, WebRTC).
Common issues when building plugins compatible with real-time collaboration
When real-time collaboration is active, all connected editors share the same underlying data state via Yjs. Plugins that interact with post data, especially custom post meta, need to follow certain patterns to avoid sync issues
Syncing custom post meta values
In addition to being registered, custom meta field UIUIUser interface must be consumed from the WordPress data store and passed to controlled input components. Always derive the input value directly from the WordPress data store via useSelect. In addition, use value instead of defaultValue on input components so the input always reflects the current data store state.
When building a plugin UI that reads from the WordPress data store, avoid copying that data into local ReactReactReact is a JavaScript library that makes it easy to reason about, construct, and maintain stateless and stateful user interfaces.
https://reactjs.org state with useState. This applies to any shared data, such as post meta or block attributes. Doing so disconnects your component from the shared collaborative state: updates from other clients will update the store, but your component wonโt reflect them after the initial render, leading to stale or conflicting data.
Blocks with side effects on insertion
Custom blocks that trigger side effects on insertion will trigger that side effect for all connected collaborators, since block content syncs immediately upon insertion.
For example, instead of auto-opening a modal when a block is inserted, show a placeholder with a button that opens the modal on click. This ensures side effects are intentional and local to the user taking the action.
You must be logged in to post a comment.