The `aria-label` on post titles in list tables changes the accessible name from `{post_title}` to `"{post_title}" (Edit)`. This change increases verbosity for screen readers and creates a mismatch between the visual text and the accessible name for voice command.
Remove the extraneous `aria-label`.
Props afercia, rianrietveld, iworks, muddassirnasim, joedolson.
Fixes#33002.
Built from https://develop.svn.wordpress.org/trunk@61738
git-svn-id: http://core.svn.wordpress.org/trunk@61044 1a063a9b-81f0-0310-95a4-ce76da25c4cd
The admin reskin changed info notices to a transparent background, matching usage in Gutenberg. But with the gray background in the core admin, these notices didn't show up in an expected manner. Additionally, using a transparent background in a context where the background color is variable is risky for color contrast.
Change `.notice-info`, `.notice-info.notice-alt`, and `.login .notice, .login .message` to use white backgrounds. Reverts changes from [61731] to apply styles also to `.message` class.
Props mohitbsf, audrasjb, peterwilsoncc, pbiron, fabiankaegy, noruzzaman, joedolson.
Fixes#64678. See #64715.
Built from https://develop.svn.wordpress.org/trunk@61737
git-svn-id: http://core.svn.wordpress.org/trunk@61043 1a063a9b-81f0-0310-95a4-ce76da25c4cd
Refines the Navigation Overlay template description to remove the "full-screen" assumption and clarify that the overlay can be toggled open and closed.
Follow-up to [61609].
Props get_dave, scruffian, wildworks.
See #64589.
Built from https://develop.svn.wordpress.org/trunk@61734
git-svn-id: http://core.svn.wordpress.org/trunk@61041 1a063a9b-81f0-0310-95a4-ce76da25c4cd
The `wp_install_maybe_enable_pretty_permalinks()` function usually enables pretty permalinks during installation, but it relies on a loopback request that may not work on all development environments.
In temporary lieu of fixing the underlying loopback request on all the container images, this switches to explictly enabling permalinks and removes redundant permalink configuration from GitHub Actions workflow files.
See #64227
Built from https://develop.svn.wordpress.org/trunk@61733
git-svn-id: http://core.svn.wordpress.org/trunk@61040 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This changeset standardizes the vertical spacing between the heading and the first content item in the “At a Glance” admin dashboard widget to match the spacing conventions used by other dashboard widgets.
Props mohitbsf, opurockey, adnanhyder.
Fixes#64682.
Built from https://develop.svn.wordpress.org/trunk@61732
git-svn-id: http://core.svn.wordpress.org/trunk@61039 1a063a9b-81f0-0310-95a4-ce76da25c4cd
Following the admin reskin, the Copy link button for sharing customizer previews was misaligned.
Override core button disabled styles to set transform and background properties. Fix shadow height.
Props mohitbsf, audrasjb, hbhalodia, huzaifaalmesbah, sajib1223, joedolson.
Fixes#64688.
Built from https://develop.svn.wordpress.org/trunk@61730
git-svn-id: http://core.svn.wordpress.org/trunk@61037 1a063a9b-81f0-0310-95a4-ce76da25c4cd
Following the admin reskin, the larger buttons in plugin cards caused an existing potential for text overlap to happen more easily. Switching to compact size restores prior behavior.
Props hiroshisato, audrasjb, huzaifaalmesbah, shailu25, joedolson.
Fixes#64686.
Built from https://develop.svn.wordpress.org/trunk@61729
git-svn-id: http://core.svn.wordpress.org/trunk@61036 1a063a9b-81f0-0310-95a4-ce76da25c4cd
Renames the option `enable_real_time_collaboration` to `wp_enable_real_time_collaboration` to include the prefix as has been the practice for new options since WordPress 5.8.0.
Props peterwilsoncc, mukesh27, parthvataliya, czarate.
See #64622.
Built from https://develop.svn.wordpress.org/trunk@61722
git-svn-id: http://core.svn.wordpress.org/trunk@61030 1a063a9b-81f0-0310-95a4-ce76da25c4cd
Fix templates in Twenty Twenty Five that have multiple query posts with offsets to prevent displaying sticky posts. Sticky posts being enabled on multiple queries results in repeated content in each query.
Add `"sticky":"ignore"` to query block parameters.
Props poena, sabernhardt, abcd95, rinkalpagdar, freibergergarcia, akshat2802, mindctrl, ozgursar, joedolson.
Fixes#62975.
Built from https://develop.svn.wordpress.org/trunk@61720
git-svn-id: http://core.svn.wordpress.org/trunk@61028 1a063a9b-81f0-0310-95a4-ce76da25c4cd
- Use a more precise regular expression for identifying "HIT" statuses to avoid false positives (e.g., "no-hit").
- Add specific verification logic for Varnish's `X-Varnish` header.
- Use a `null` value in the header mapping to indicate a header existence check, when no callback is supplied.
- Improve documentation with links for information about certain headers.
Developed in https://github.com/WordPress/wordpress-develop/pull/10855
Follow-up to [61355], [54043].
Props westonruter, dmsnell.
See #63748.
Fixes#64370.
Built from https://develop.svn.wordpress.org/trunk@61711
git-svn-id: http://core.svn.wordpress.org/trunk@61019 1a063a9b-81f0-0310-95a4-ce76da25c4cd
Bring over the changes required to implement client side media in core. This feature recently graduated from experiments and is ready for testing in beta.
Props adamsilverstein, westonruter, mamaduka, mukesh27, swissspidy, andrewserong, ellatrix, ramonjd.
Fixes#62243.
Built from https://develop.svn.wordpress.org/trunk@61703
git-svn-id: http://core.svn.wordpress.org/trunk@61011 1a063a9b-81f0-0310-95a4-ce76da25c4cd
Adds missing `svn:ignore` entries for files generated by the Gutenberg build process:
* Root directory: `.gutenberg-hash`
* `src/wp-includes/assets`: ignore all generated files
* `src/wp-includes/blocks`: remove versioned directories and ignore all generated files
Follow-up to [61476].
Props ellatrix.
See #64393.
Built from https://develop.svn.wordpress.org/trunk@61701
git-svn-id: http://core.svn.wordpress.org/trunk@61009 1a063a9b-81f0-0310-95a4-ce76da25c4cd
The WordPress AI Client is a provider-agnostic API for WordPress code to call generative AI models via a consistent interface. Plugins and Core can use it to provide AI driven features for users, while users maintain full autonomy in choosing which AI provider(s) they want to rely on and how they configure them.
This changeset merges the technical foundation for the WordPress AI Client into Core. This foundation was originally implemented in the https://github.com/WordPress/wp-ai-client package, which will be sunset going forward. The underlying https://github.com/WordPress/php-ai-client package is bundled with this changeset and will remain a separate library maintained by the WordPress project, for WordPress Core and the PHP ecosystem.
No AI providers are bundled out of the box. Without explicit configuration and explicit calling code, WordPress will not send prompts or data to any external service. Site owners will be able to install plugins to enable usage of specific AI providers, built on top of this foundation.
This is the first changeset of two that are most relevant for the AI Client feature. The subsequent change will introduce a configuration screen for different AI providers, where users can install provider plugins, configure their credentials, and enable the canonical WordPress AI plugin. Together, this infrastructure and UI will enable the WordPress ecosystem to build AI features in a seamless and interoperable way.
Original merge proposal: https://make.wordpress.org/core/2026/02/03/proposal-for-merging-wp-ai-client-into-wordpress-7-0/
Props jason_the_adams, flixos90, desrosj, dkotter, jorgefilipecosta, peterwilsoncc, johnbillion, jorbin, swissspidy, isotropic.
See #64591.
Built from https://develop.svn.wordpress.org/trunk@61700
git-svn-id: http://core.svn.wordpress.org/trunk@61008 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This change introduces PHPStan static analysis configured at [https://phpstan.org/user-guide/rule-levels rule level 0], which includes: "basic checks, unknown classes, unknown functions, unknown methods called on `$this`, wrong number of arguments passed to those methods and functions, always undefined variables". Contributors may elect for a higher PHPStan rule level by creating a `phpstan.neon` which overrides `phpstan.neon.dist`.
* Fix various PHPStan level 0 errors by adding `@phpstan-ignore` comments, updating PHPDoc types, and adding missing return values.
* Remove existing `@phpstan-ignore` comments that are now obsolete or inapplicable for level 0.
* Add a new GitHub Actions workflow for PHPStan Static Analysis. Reports are currently provided as warnings with inline annotations in pull requests and do not fail the build.
* Add a `phpstan` Grunt task and include it in the `precommit:php` task to run before `phpunit`.
* Introduce a `typecheck:php` npm script and a `composer phpstan` script to run analysis in local development environments.
* Add documentation for PHPStan usage in `tests/phpstan/README.md`.
Developed in https://github.com/WordPress/wordpress-develop/pull/10419
Props justlevine, westonruter, johnbillion, desrosj, SirLouen, dmsnell, oglekler, joehoyle, jorbin.
See #64238, #63268, #52217, #51423.
Fixes#61175.
Built from https://develop.svn.wordpress.org/trunk@61699
git-svn-id: http://core.svn.wordpress.org/trunk@61007 1a063a9b-81f0-0310-95a4-ce76da25c4cd
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