Make WordPress Core


Ignore:
Timestamp:
10/10/2023 01:19:42 PM (14 months ago)
Author:
Bernhard Reiter
Message:

Patterns: Inject theme attribute into Template Part blocks.

[56805] introduced a regression: The theme attribute was no longer injected into Template Part blocks inside of patterns. This caused errors on the frontend, where instead of a given template part, an error message such as Template part has been deleted or is unavailable: header was seen.

This changeset rectifies that problem, and adds unit test coverage to guard against future regressions.

Follow-up to [56805].
Props scruffian, gziolo.
Fixes #59583.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/tests/phpunit/tests/blocks/wpBlockPatternsRegistry.php

    r56733 r56818  
    318318
    319319    /**
     320     * Should insert a theme attribute into Template Part blocks in registered patterns.
     321     *
     322     * @ticket 59583
     323     *
     324     * @covers WP_Block_Patterns_Registry::register
     325     * @covers WP_Block_Patterns_Registry::get_all_registered
     326     */
     327    public function test_get_all_registered_includes_theme_attribute() {
     328        $test_pattern = array(
     329            'title'   => 'Test Pattern',
     330            'content' => '<!-- wp:template-part {"slug":"header","align":"full","tagName":"header","className":"site-header"} /-->',
     331        );
     332        $this->registry->register( 'test/pattern', $test_pattern );
     333
     334        $expected = sprintf(
     335            '<!-- wp:template-part {"slug":"header","align":"full","tagName":"header","className":"site-header","theme":"%s"} /-->',
     336            get_stylesheet()
     337        );
     338        $patterns = $this->registry->get_all_registered();
     339        $this->assertSame( $expected, $patterns[0]['content'] );
     340    }
     341
     342    /**
    320343     * Should insert hooked blocks into registered patterns.
    321344     *
     
    370393
    371394    /**
     395     * Should insert a theme attribute into Template Part blocks in registered patterns.
     396     *
     397     * @ticket 59583
     398     *
     399     * @covers WP_Block_Patterns_Registry::register
     400     * @covers WP_Block_Patterns_Registry::get_registered
     401     */
     402    public function test_get_registered_includes_theme_attribute() {
     403        $test_pattern = array(
     404            'title'   => 'Test Pattern',
     405            'content' => '<!-- wp:template-part {"slug":"header","align":"full","tagName":"header","className":"site-header"} /-->',
     406        );
     407        $this->registry->register( 'test/pattern', $test_pattern );
     408
     409        $expected = sprintf(
     410            '<!-- wp:template-part {"slug":"header","align":"full","tagName":"header","className":"site-header","theme":"%s"} /-->',
     411            get_stylesheet()
     412        );
     413        $pattern  = $this->registry->get_registered( 'test/pattern' );
     414        $this->assertSame( $expected, $pattern['content'] );
     415    }
     416
     417    /**
    372418     * Should insert hooked blocks into registered patterns.
    373419     *
Note: See TracChangeset for help on using the changeset viewer.