This changeset does the following:
- Custom statuses added via `plugins_list` now appear as tabs, to filter the related plugins
- The tab label is customizable via the new `plugins_list_status_text` hook
Follow-up to [56068].
Props juliobox, audrasjb, hellofromTonya, khokansardar, sajjad67, davidbaumwald, sukhendu2002, SirLouen, mindctrl, shailu25, huzaifaalmesbah, westonruter.
See #60495.
Built from https://develop.svn.wordpress.org/trunk@61695
git-svn-id: http://core.svn.wordpress.org/trunk@61003 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This reverts [61600]. Other core abilities did not made into 7.0 beta 1 timeline, so adding just a single ability does not adds much value and we are temporarily reverting this addition.
This commit is just a clean execution of the revert command.
Props jorgefilipecosta, jason_the_adams, justlevine.
See #64455.
Built from https://develop.svn.wordpress.org/trunk@61690
git-svn-id: http://core.svn.wordpress.org/trunk@60998 1a063a9b-81f0-0310-95a4-ce76da25c4cd
Syncs/merges the PHP changes from the Gutenberg PR https://github.com/WordPress/gutenberg/pull/75366.
In Gutenberg, we have added support for real-time collaboration using CRDT documents (via the [Yjs library](https://yjs.dev/)). This work has suggested the following additions to WordPress:
1. A default "sync provider" based on HTTP polling that allows collaborators to share updates with each other. Previously, we relied on WebRTC connections between collaborators for this purpose, but it proved unreliable under many network conditions.
- Our solution is designed to work on any WordPress installation.
- HTTP polling is the transport we identified as most likely to work universally.
- Given the isolation and lifecycle of PHP processes, updates must be stored centrally in order to be shared among peers. We have chosen to store updates in post meta against a special post type, but alternate storage mechanisms are possible.
- Collaborative editing can involve syncing multiple CRDT documents. To limit the number of connections consumed by this provider, requests are batched.
- To prevent unbounded linear growth, updates are periodically compacted.
- To avoid excessive load on lower-resourced hosts, this provider will benefit from usage limits (e.g., a maximum of three connected collaborators) enforced by the client (Gutenberg).
2. A new registered post meta that allows Gutenberg to persist CRDT documents alongside posts.
- This provides all collaborators with a "shared starting point" for the collaborative session, which avoids duplicate updates.
- Content stored in the WordPress database always remains the source of truth. If the content differs from the persisted CRDT document, the CRDT document is updated to match the database.
3. A new Writing setting that allows users to opt-in to real-time collaboration.
- Enabling real-time collaboration disables post lock functionality and connects users to the sync provider.
4. A behavior change to autosaves is needed. When the the original author is editing a draft post (post_status == 'draft' OR 'auto-draft') and they hold the post lock, the autosave targets the actual post instead of an autosave revision. This puts the post data and the persisted CRDT document out of sync and leads to duplicate updates. When real-time collaboration is enabled, all collaborators must autosave in the same way.
This PR provides a proposed implementation of the changes above. This corresponding Gutenberg PR moves the work from the `experimental` directory to `lib/compat`:
https://github.com/WordPress/gutenberg/pull/75366
Cumulative work to add this functionality can be found using this label:
https://github.com/WordPress/gutenberg/issues?q=label%3A%22%5BFeature%5D%20Real-time%20Collaboration%22%20is%3Apr
Developed https://github.com/WordPress/wordpress-develop/pull/10894.
Props czarate, paulkevan, ellatrix, timothyblynjacobs, westonruter, jorgefilipecosta, mindctrl.
Fixes#64622.
Built from https://develop.svn.wordpress.org/trunk@61689
git-svn-id: http://core.svn.wordpress.org/trunk@60997 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This changeset allow developers to attach custom error handlers into `wp_trigger_error()` even if `WP_DEBUG` is not truthy.
It introduces two new hooks, making `wp_trigger_error()` consistent with what is available in `_doing_it_wrong`:
- `wp_trigger_error_always_run` always fires when the given function triggers a user-level error/warning/notice/deprecation message.
- `wp_trigger_error_trigger_error` filters whether to trigger the error.
Props kkmuffme, swissspidy, audrasjb.
Fixes#60886.
Built from https://develop.svn.wordpress.org/trunk@61688
git-svn-id: http://core.svn.wordpress.org/trunk@60996 1a063a9b-81f0-0310-95a4-ce76da25c4cd
Previously, WordPress allowed site owners to open registration AND to set the default new user level to "Administrator" or "Editor". While this combination may make sense for some sites, this is genrally a really really bad idea.
With this changeset:
- Administrator and Editor roles are now removed from the new user default role selector in the General Options admin screen.
- If such a role was selected before, an alert is shown in Site Health.
- A new filter is introduced: `default_role_dropdown_excluded_roles` allows developers to change the default excluded roles in the dropdown.
Props kraftbj, subrataemfluence, roytanck, dd32, ottok, jrf, eatingrules, verygoode, generosus, stevejburge, arunu1996, benniledl, audrasjb, mukesh27, swissspidy, Mte90, zodiac1978, pooja1210, davidbaumwald, johnbillion, jorbin, SirLouen, oglekler, kirasong, shailu25, huzaifaalmesbah, jsmansart.
Fixes#43936.
Built from https://develop.svn.wordpress.org/trunk@61687
git-svn-id: http://core.svn.wordpress.org/trunk@60995 1a063a9b-81f0-0310-95a4-ce76da25c4cd
Fix a few miscellaneous colors and alignment shifts missed in previous updates. Apply the new admin link and button colors on missed cases in the customizer, classic widgets, skip links, help and screen options, and admin nav menus.
Props joedolson, fabiankaegy.
Fixes#64652.
Built from https://develop.svn.wordpress.org/trunk@61682
git-svn-id: http://core.svn.wordpress.org/trunk@60990 1a063a9b-81f0-0310-95a4-ce76da25c4cd
Adds the admin-scheme styles as a dependency for the login and install styles. This is to ensure the CSS variables are available to the login, installation, database repair and upgrade screens.
Modifies the display of notices in the login styles to match those in the new default scheme, "modern".
Props peterwilsoncc, wildworks, westonruter, mukesh27, fabiankaegy, audrasjb, huzaifaalmesbah, sabernhardt, presskopp, SirLouen, ellatrix, nendeb55, neo2k23, jsmansart, joedolson.
Fixes#64640, #64548. See #64308.
Built from https://develop.svn.wordpress.org/trunk@61681
git-svn-id: http://core.svn.wordpress.org/trunk@60989 1a063a9b-81f0-0310-95a4-ce76da25c4cd
When building Gutenberg, the `--base-url` argument was forwarded through
`npm run build --`, which passes arguments through a shell layer. The
argument value `includes_url( 'build/' )` contains spaces, parentheses,
and single quotes that could be mangled by shell parsing on some
platforms, causing the generated `constants.php` to lose the trailing
slash in `build_url`.
This invokes `node bin/build.mjs` directly instead, bypassing npm's
shell forwarding entirely. The argument is passed as a single array
element via `spawn`, so it arrives intact regardless of platform.
Props youknowriad, desrosj.
See #64656.
Built from https://develop.svn.wordpress.org/trunk@61679
git-svn-id: http://core.svn.wordpress.org/trunk@60987 1a063a9b-81f0-0310-95a4-ce76da25c4cd
The `removeSourceMaps` regex in `copy-gutenberg-build.js` was missing the `/g` (global) flag, so it only stripped the **first** `//# sourceMappingURL=` comment per file.
Bundled files such as the `@wordpress/vips` web worker can contain **multiple** `sourceMappingURL` references from concatenated modules (esbuild builds worker bundles with `sourcemap: true`, and when webpack bundles the module entry point it preserves comments from source modules). This causes the `verify:source-maps` build check to fail:
```
Warning: The build/wp-includes/js/dist/script-modules/vips/worker.js file must not contain a sourceMappingURL.
```
Adding the `/g` flag ensures every occurrence is removed, consistent with the existing `replace:source-maps` Grunt task which already uses the global flag.
Fixes the build failure reported in https://github.com/WordPress/wordpress-develop/pull/10968#issuecomment-3920484908.
Developed in https://github.com/WordPress/wordpress-develop/pull/10970.
Props adamsilverstein.
See #64393.
Built from https://develop.svn.wordpress.org/trunk@61677
git-svn-id: http://core.svn.wordpress.org/trunk@60985 1a063a9b-81f0-0310-95a4-ce76da25c4cd
Introduces a registry class to mediate access to a library of SVG icons. These
icons can be queried by directly interfacing with the singleton class
`WP_Icons_Registry`, or via the REST API using the following GET endpoints:
- /wp/v2/icons
- /wp/v2/icons/$name, e.g. /wp/v2/icons/core/audio
Modifies the Gutenberg-to-Core copy process to copy from `@wordpress/icons`:
- the icons (SVG files) to `wp-includes/icons/library/*.svg`
- the manifest file to `wp-includes/icons/manifest.php`
For 7.0, the registry remains closed to third-party icons, serving only core
icons per the manifest file.
Together, these APIs power the new Icon block.
Developed in https://github.com/WordPress/gutenberg/pull/72215
Developed in https://github.com/WordPress/gutenberg/pull/74943
Developed in https://github.com/WordPress/wordpress-develop/pull/10909
Props mcsf, wildworks, fabiankaegy, joen, jorgefilipecosta, ntsekouras.
Fixes#64651.
Built from https://develop.svn.wordpress.org/trunk@61674
git-svn-id: http://core.svn.wordpress.org/trunk@60982 1a063a9b-81f0-0310-95a4-ce76da25c4cd
The Gutenberg build copy script was missing `constants.php` from its list of
PHP infrastructure files, causing a fatal error on the Font Library admin page.
Additionally, the `--base-url` argument was missing a trailing slash inside the
`includes_url()` call, resulting in malformed asset URLs.
Also renames the `--fast` build flag to `--skip-types` to match the current
Gutenberg build script option.
Props youknowriad, ellatrix, dd32, westonruter, desrosj.
Fixes#64656.
Built from https://develop.svn.wordpress.org/trunk@61673
git-svn-id: http://core.svn.wordpress.org/trunk@60981 1a063a9b-81f0-0310-95a4-ce76da25c4cd
The `$context` parameter in `sanitize_term_field()` is required and has no default value in the function signature. The PHPDoc previously stated `Default 'display'`, which was incorrect and could lead callers to assume the argument was optional.
Follow-up to [49789].
Props audrasjb, dilipbheda, johnbillion, mindctrl, mukesh27, Presskopp, rollybueno, SirLouen, vishalkakadiya, wildworks
Fixes#63257.
Built from https://develop.svn.wordpress.org/trunk@61672
git-svn-id: http://core.svn.wordpress.org/trunk@60980 1a063a9b-81f0-0310-95a4-ce76da25c4cd
Allow skipping serialization for the `ariaLabel` block support. This enables applying the `aria-label` attribute to inner elements instead of the block wrapper.
Follow-up to [59925].
Props mukesh27, wildworks.
Fixes#64594.
Built from https://develop.svn.wordpress.org/trunk@61671
git-svn-id: http://core.svn.wordpress.org/trunk@60979 1a063a9b-81f0-0310-95a4-ce76da25c4cd
These legacy certificates have historically been retained in the certificate bundle so some ancient versions of OpenSSL continue to work with the bundle despite path discovery bugs in those versions.
The affected OpenSSL versions are all over a decade old now. To ensure the ongoing security of the HTTP API these 1024 bit certificates have been removed.
Props kkmuffme, JavierCasares, desrosj
Fixes#64063
Built from https://develop.svn.wordpress.org/trunk@61669
git-svn-id: http://core.svn.wordpress.org/trunk@60977 1a063a9b-81f0-0310-95a4-ce76da25c4cd
In [59797], the `matchdep` dependency was removed because it has been abandoned. The `grunt-contrib-imagemin` package was missed in the list of `gruntDependencies` to load that replaced the functionality for `matchdep`.
This adds `imagemin` to the list to restore the `precommit:image` Grunt task functionality.
Props jorbin.
Fixes#64328.
Built from https://develop.svn.wordpress.org/trunk@61664
git-svn-id: http://core.svn.wordpress.org/trunk@60975 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This updates the following GitHub Actions to their latest versions:
- `actions/cache` from `4.3.0` to `5.0.3`
- `actions/checkout` from `5.0.0` to `6.0.2`
- `actions/download-artifact` from `6.0.0` to `7.0.0`
- `actions/setup-node` from `6.0.0` to `6.2.0`
- `actions/upload-artifact` from `5.0.0` to `6.0.0`
- `codecov/codecov-action` from `5.5.1` to `5.5.2`
- `shivammathur/setup-php` from `2.35.5` to `2.36.0`
See #64227.
Built from https://develop.svn.wordpress.org/trunk@61663
git-svn-id: http://core.svn.wordpress.org/trunk@60974 1a063a9b-81f0-0310-95a4-ce76da25c4cd
Update the front-end CSS used for multisite user activation and signup. Modify both styles to help prevent conflicts with existing theme styles and provide more consistent margins, paddings, widths, and font sizes.
Props joedolson, sabernhardt, rishabhwp, r1k0, johnjamesjacoby.
Fixes#63861.
Built from https://develop.svn.wordpress.org/trunk@61662
git-svn-id: http://core.svn.wordpress.org/trunk@60973 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This changeset does the following:
- Explicitly add `403` to `wp_die()` calls for unauthorized actions
- Introduce the `network_user_spam_propagate_to_blogs` filter to provide flexibility for developers to control spam status propagation
- Use `is_super_admin()` checks for both "spam" and "notspam" actions to prevent unauthorized modification of network administrators
- Refine the "notspam" logic to ensure that blog status updates are correctly scoped to the current network
- Add related unit tests coverage
Props ignatiusjeroe, realloc, johnjamesjacoby, westonruter, mukesh27, pratiknawkar94, anukasha.
Fixes#61146.
Built from https://develop.svn.wordpress.org/trunk@61660
git-svn-id: http://core.svn.wordpress.org/trunk@60971 1a063a9b-81f0-0310-95a4-ce76da25c4cd
Set the `core/router` state `url` property with the current page URL using `get_self_link()` when the first `data-wp-router-region` directive is processed, so that the stores subscribing to that property already have the correct value on page load.
Props westonruter.
Fixes#64649.
Built from https://develop.svn.wordpress.org/trunk@61659
git-svn-id: http://core.svn.wordpress.org/trunk@60970 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This changeset avoids throwing a PHP error when an invalid ID is assigned to a menu location, creates a text string to display when using an invalid menu ID, and assigns `id` and `aria-describedby` attributes to connect the `span` element with the related checkbox.
Props skylarkcob, Frozzare, sabernhardt, apermo, SirLouen, audrasjb, mukesh27, westonruter.
Fixes#37026.
Built from https://develop.svn.wordpress.org/trunk@61658
git-svn-id: http://core.svn.wordpress.org/trunk@60969 1a063a9b-81f0-0310-95a4-ce76da25c4cd
These are from the `WordPress-Extra` standard, which is not included in the `phpcs.xml.dist` configuration (the repository uses `WordPress-Core`).
Includes removing unnecessary `WPThemeReview` annotations carried over from upstream.
Follow-up to [49216].
Props rodrigosprimo.
See #64627.
Built from https://develop.svn.wordpress.org/trunk@61654
git-svn-id: http://core.svn.wordpress.org/trunk@60965 1a063a9b-81f0-0310-95a4-ce76da25c4cd
Update the `data-wp-interactive` directive in the loading bar from `core/router` to `core/router/private` so that internal navigation state properties (`hasStarted`, `hasFinished`) are not exposed as part of the public `core/router` store API.
Props westonruter.
Fixes#64647.
Built from https://develop.svn.wordpress.org/trunk@61653
git-svn-id: http://core.svn.wordpress.org/trunk@60964 1a063a9b-81f0-0310-95a4-ce76da25c4cd
Usernames, email, and password fields are currently `rtl` in `rtl` locales. However, these fields are primarily standardized to `ltr` character sets and for better experience and readability, should be presented left-to-right in all locales.
Fix username, email, and password fields throughout install and admin to be set to `ltr` text direction.
Props man4toman, sabernhardt, ierwira, agnieszkaszuba, SergeyBiryukov, joyously, hellofromTonya, shibleemehdi, oglekler, audrasjb, sajjad67, huzaifaalmesbah, joedolson.
Fixes#54915.
Built from https://develop.svn.wordpress.org/trunk@61651
git-svn-id: http://core.svn.wordpress.org/trunk@60962 1a063a9b-81f0-0310-95a4-ce76da25c4cd
The Query Loop block's `taxQuery` attribute now supports an include/exclude structure for term filtering. This updates the server-side query building to handle both the old format (e.g. `{"category":[4]}`) and the new format (e.g. `{"include":{"category":[4]},"exclude":{"post_tag":[5]}}`).
Props ntsekouras, westonruter, peterwilsoncc, mcsf.
Fixes#64416.
Built from https://develop.svn.wordpress.org/trunk@61650
git-svn-id: http://core.svn.wordpress.org/trunk@60961 1a063a9b-81f0-0310-95a4-ce76da25c4cd
Menu locations are referred to in various places as 'menu location', 'theme location', or 'display location'.
In some cases these are clear, because both menus and locations are described in the same text. But in other cases they are ambiguous.
Clarify ambiguous uses of 'theme location' and 'menu location' in text.
Props pavelevap, sabernhardt, DrewAPicture, egill, bridgetwillard, obenland, joedolson.
Fixes#33743.
Built from https://develop.svn.wordpress.org/trunk@61648
git-svn-id: http://core.svn.wordpress.org/trunk@60959 1a063a9b-81f0-0310-95a4-ce76da25c4cd
Remove the full border and box-shadow from notices, keeping only the 4px left border. Add semantic background colors to each notice type: green for success, yellow for warnings, red for errors, and transparent for info. Update border colors to match the design system tokens.
Restyle the dismiss button with a larger 24px icon, flexbox centering, and 2px border-radius. Replace the red hover color with a subtle opacity change and apply a theme-color focus ring. Increase dismissible notice right padding to accommodate the larger button.
Update notice text with consistent typography and restyle notice links to use theme color custom properties with matching focus rings.
Props fabiankaegy, mukesh27, joedolson, phpbits, sabernhardt, Joen, fcoveram, dkotter, navi161, poojapadamad.
Fixes#64548.
Built from https://develop.svn.wordpress.org/trunk@61647
git-svn-id: http://core.svn.wordpress.org/trunk@60958 1a063a9b-81f0-0310-95a4-ce76da25c4cd
Apply 8px border-radius and a consistent `rgb(0, 0, 0, 0.1)` border to cards, postboxes, plugin cards, and theme cards. Standardize internal padding to 16px for postbox content and headers.
Update drag-and-drop interactions: replace dashed gray outlines on sortable drop zones with theme-color-tinted backgrounds, and restyle sortable placeholders with a solid theme-color border and subtle background fill.
Adjust dashboard widget spacing, welcome panel padding, and empty-container drop zone styles. Add overflow hidden to plugin and theme cards to clip content to the new rounded corners.
Props fabiankaegy, mukesh27, joedolson, navi161, phpbits, karmatosed, sabernhardt, poojapadamad, psorensen, generosus.
Fixes#64549.
Built from https://develop.svn.wordpress.org/trunk@61646
git-svn-id: http://core.svn.wordpress.org/trunk@60957 1a063a9b-81f0-0310-95a4-ce76da25c4cd
Introduce a design system tokens file (`_tokens.scss`) based on the WordPress Design System, providing standardized values for colors, spacing, typography, border-radius, and elevation.
Update buttons to use CSS custom properties for theme color support across all admin color schemes. Restyle primary buttons with filled theme-color backgrounds, secondary buttons with outlined borders, and add a tertiary button mixin. Adopt Gutenberg-style focus rings with outset box-shadows and transparent outlines for Windows High Contrast mode compatibility.
Increase default input and select height from 30px to 40px, apply 2px border-radius, and update border and placeholder colors to match the design system. Restyle checkboxes and radios with filled theme-color checked states and white indicator marks, using outset double-ring focus styles consistent with Gutenberg.
Apply compact 32px sizing to list table controls, page-title-action buttons, and toolbar elements. Convert tag input layouts and the major-publishing-actions bar to flexbox.
Props fabiankaegy, joedolson, audrasjb, joen, phpbits, magaliechetrit, karmatosed.
Fixes#64547.
Built from https://develop.svn.wordpress.org/trunk@61645
git-svn-id: http://core.svn.wordpress.org/trunk@60956 1a063a9b-81f0-0310-95a4-ce76da25c4cd
Rename the 'Modern' color scheme to 'Default' and the previous 'Default' scheme to 'Fresh'. Update all fallback references from 'fresh' to 'modern' across admin headers, the Customizer, the color scheme picker, the script loader, and user functions.
Add an upgrade routine in `upgrade_700()` to migrate existing users with the 'fresh' admin color to 'modern'.
Props fabiankaegy, audrasjb, mukesh27, westonruter, peterwilsoncc, jorbin, sabernhardt, joedolson, phpbits.
Fixes#64546.
Built from https://develop.svn.wordpress.org/trunk@61644
git-svn-id: http://core.svn.wordpress.org/trunk@60955 1a063a9b-81f0-0310-95a4-ce76da25c4cd