Skip to content

Add a core/settings ability#691

Open
jorgefilipecosta wants to merge 1 commit into
developfrom
add/core-settings-ability
Open

Add a core/settings ability#691
jorgefilipecosta wants to merge 1 commit into
developfrom
add/core-settings-ability

Conversation

@jorgefilipecosta

@jorgefilipecosta jorgefilipecosta commented Jun 9, 2026

Copy link
Copy Markdown
Member

Summary

Adds the core/settings ability to the plugin, matching the equivalent WordPress core change in WordPress/wordpress-develop#12141. Read-only; returns settings flagged show_in_abilities as a flat name => value map (metadata in the output schema), filterable by group or slugs (mutually exclusive). Requires manage_options.

  • Settings — registers core/settings. Kept near-identical to core's WP_Settings_Abilities (differences marked with // Plugin: comments). It registers at priority 11 and unregisters any core-provided copy first, so the plugin's version wins when both are present.
  • Show_In_Abilities — seeds the show_in_abilities flag onto a curated set of core settings via the register_setting_args filter, so the ability returns data on a stock site before core ships the flag. Object-type-agnostic, for future reuse (post types, meta).

Test plan

In wp-admin, open the browser console:

const { executeAbility } = await import( '@wordpress/abilities' );

await executeAbility( 'core/settings', {} );
await executeAbility( 'core/settings', { group: 'reading' } );
await executeAbility( 'core/settings', { slugs: [ 'blogname' ] } );
  • Flat name => value map with typed values
  • group / slugs filters work; supplying both is rejected
  • Non-admin (no manage_options) is denied

Integration tests added under tests/Integration/Includes/Abilities/.

Open WordPress Playground Preview

@github-actions

github-actions Bot commented Jun 9, 2026

Copy link
Copy Markdown

The following accounts have interacted with this PR and/or linked issues. I will continue to update these lists as activity occurs. You can also manually ask me to refresh this list by adding the props-bot label.

If you're merging code through a pull request on GitHub, copy and paste the following into the bottom of the merge commit message.

Co-authored-by: jorgefilipecosta <jorgefilipecosta@git.wordpress.org>

To understand the WordPress project's expectations around crediting contributors, please review the Contributor Attribution page in the Core Handbook.

Add the core/settings ability, matching the equivalent WordPress core change.
Read-only; returns settings flagged show_in_abilities as a flat name => value
map, filterable by group or by name, gated on manage_options.

The Settings class is kept near-identical to core's WP_Settings_Abilities and
registers at priority 11, unregistering any core-provided copy first so the
plugin wins when both are present. A generic Show_In_Abilities component seeds
the show_in_abilities flag onto a curated set of core settings so the ability
returns data on a stock site.

Includes a Playwright e2e spec that drives the ability through the
@wordpress/abilities client. Keeps the output schema free of unsupported
formats and per-property defaults so the client-side validator accepts it and
does not inject defaults into filtered results.
@jorgefilipecosta jorgefilipecosta force-pushed the add/core-settings-ability branch from 4c74702 to 413c6a4 Compare June 12, 2026 14:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant