Make WordPress Core


Ignore:
Timestamp:
09/20/2024 02:05:50 AM (19 months ago)
Author:
noisysocks
Message:

Editor: Add plugin template registration API and improve theme overrides for plugin-registered templates

This commit introduces a new API to allow plugins to easily register block
templates with wp_register_block_template() and the
WP_Block_Templates_Registry class, addressing the complexity of hooking into
multiple filters. It also ensures plugin-registered templates overridden by
themes fall back to the plugin-provided title and description when the theme
doesn't define them.

See https://github.com/WordPress/gutenberg/pull/61577.
See https://github.com/WordPress/gutenberg/pull/64610.

Fixes #61804.
Props aljullu, peterwilsoncc, antonvlasenko, azaozz, youknowriad, noisysocks.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/tests/phpunit/tests/block-template.php

    r59061 r59073  
    435435
    436436    /**
     437     * Tests that get_block_templates() returns plugin-registered templates.
     438     *
     439     * @ticket 61804
     440     *
     441     * @covers ::get_block_templates
     442     */
     443    public function test_get_block_templates_from_registry() {
     444        $template_name = 'test-plugin//test-template';
     445
     446        wp_register_block_template( $template_name );
     447
     448        $templates = get_block_templates();
     449
     450        $this->assertArrayHasKey( $template_name, $templates );
     451
     452        wp_unregister_block_template( $template_name );
     453    }
     454
     455    /**
     456     * Tests that get_block_template() returns plugin-registered templates.
     457     *
     458     * @ticket 61804
     459     *
     460     * @covers ::get_block_template
     461     */
     462    public function test_get_block_template_from_registry() {
     463        $template_name = 'test-plugin//test-template';
     464        $args          = array(
     465            'title' => 'Test Template',
     466        );
     467
     468        wp_register_block_template( $template_name, $args );
     469
     470        $template = get_block_template( 'block-theme//test-template' );
     471
     472        $this->assertSame( 'Test Template', $template->title );
     473
     474        wp_unregister_block_template( $template_name );
     475    }
     476
     477    /**
    437478     * Registers a test block to log `in_the_loop()` results.
    438479     *
Note: See TracChangeset for help on using the changeset viewer.