Make WordPress Core


Ignore:
Timestamp:
10/21/2025 01:40:28 PM (11 months ago)
Author:
ellatrix
Message:

Templates: add PHP changes required for the template activation feature.

  • Adds the active_templates setting, which is an object holding the template slug as a key and template post ID as the value.
  • To maintain backwards compatibility, any wp_template (post type) not created through the new API will be activated.
  • get_block_template and get_block_templates have been adjusted to check active_templates. These functions should never return inactive templates, just like before, to maintain backwards compatibility.
  • The pre-existing /templates endpoint and sub-endpoints remain and work exactly as before.
  • A new endpoint /wp_template has been added, but this is just a regular posts controller (WP_REST_Posts_Controller). We do register an additional theme field and expose the is_wp_suggestion meta.
  • Another new endpoint /wp_registered_template has been added, which is read-only and lists the registered templates from themes and plugin (un-edited, without activations applied).

These changes are to be iterated on.

See https://github.com/WordPress/wordpress-develop/pull/8063.

Props ellatrix, shailu25, ntsekouras.
Fixes #62755.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-includes/theme-templates.php

    r59832 r61029  
    4747function wp_filter_wp_template_unique_post_slug( $override_slug, $slug, $post_id, $post_status, $post_type ) {
    4848        if ( 'wp_template' !== $post_type && 'wp_template_part' !== $post_type ) {
     49                return $override_slug;
     50        }
     51
     52        // For wp_template, slugs no longer have to be unique within the same theme.
     53        if ( 'wp_template' !== $post_type ) {
    4954                return $override_slug;
    5055        }
Note: See TracChangeset for help on using the changeset viewer.