Make WordPress Core

Opened 11 days ago

Last modified 10 days ago

#49406 new enhancement

Introduce register_theme_support method

Reported by: kadamwhite Owned by:
Milestone: Awaiting Review Priority: normal
Severity: normal Version: trunk
Component: Themes Keywords:
Focuses: rest-api Cc:

Description (last modified by kadamwhite)

In #49037 support was added to list support for core theme features in the /themes endpoint. This patch was fairly conservative and manually safelisted specific theme supports by manually enumerating their expected schema in the controller.

Custom theme support values introduced by non-core plugins are not yet supported due to the lack of a safe way to validate the shape and content of their associated values. Several major plugins like WooCommerce and jetpack do implement their own theme-support features. While we can theoretically write out the schema for all high-profile plugins manually, this approach is both inequitable (what is "high-profile?") and would be unsustainably difficult to maintain.

The way that we're able to surface metadata to the API is by explicitly registering it using register_post_meta (and related functions). In #49037 therefore, @spacedmonkey proposed introducing a new register_theme_support method which core & third-party themes can use to describe the details of their features. This method could be used by plugins to describe the theme features they introduce, and the values used in that registration could then be used to safely populate theme support details in this endpoint.

Discussed in Slack on 2020-02-11

Change History (3)

#1 @kadamwhite
11 days ago

  • Description modified (diff)

#2 @georgestephanis
11 days ago

So to confirm on this, functionality would be similar to scripts / styles -- in that just because the theme support is /registered/ it isn't flagged on. Registering is just describing it.

I'd also suggest that we make sure theme support can be added before it's registered -- so that a late register doesn't break legacy declarations of adding it.

#3 @dshanske
10 days ago

Suggest, to figure out how to describe custom theme support properties, we ask for someone to provide a list of the custom ones the plugins are using and what they represent.

At the least, Jetpack and Woocommerce as represented in the ticket. Also, what properties do the built in ones have?

Note: See TracTickets for help on using tickets.