Make WordPress Core


Ignore:
Timestamp:
09/20/2024 02:05:50 AM (2 years 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.