mirror of
git://develop.git.wordpress.org/
synced 2025-02-25 09:03:09 +01:00
Themes: Clear existing pattern cache when in theme development mode and prevent PHP warning due to missing file.
Follow up to [56765]. Props spacedmonkey, afercia, jrf, flixos90. Fixes #59591. See #59490. git-svn-id: https://develop.svn.wordpress.org/trunk@56931 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
parent
93782b5177
commit
8382683459
@ -350,9 +350,25 @@ function _register_theme_block_patterns() {
|
||||
continue;
|
||||
}
|
||||
|
||||
$file_path = $dirpath . $file;
|
||||
|
||||
if ( ! file_exists( $file_path ) ) {
|
||||
_doing_it_wrong(
|
||||
__FUNCTION__,
|
||||
sprintf(
|
||||
/* translators: %s: file name. */
|
||||
__( 'Could not register file "%s" as a block pattern as the file does not exist.' ),
|
||||
$file
|
||||
),
|
||||
'6.4.0'
|
||||
);
|
||||
$theme->delete_pattern_cache();
|
||||
continue;
|
||||
}
|
||||
|
||||
// The actual pattern content is the output of the file.
|
||||
ob_start();
|
||||
include $dirpath . $file;
|
||||
include $file_path;
|
||||
$pattern_data['content'] = ob_get_clean();
|
||||
if ( ! $pattern_data['content'] ) {
|
||||
continue;
|
||||
@ -408,11 +424,13 @@ add_action( 'init', '_register_theme_block_patterns' );
|
||||
function _wp_get_block_patterns( WP_Theme $theme ) {
|
||||
$can_use_cached = ! wp_is_development_mode( 'theme' );
|
||||
|
||||
if ( $can_use_cached ) {
|
||||
$pattern_data = $theme->get_pattern_cache();
|
||||
if ( is_array( $pattern_data ) ) {
|
||||
$pattern_data = $theme->get_pattern_cache();
|
||||
if ( is_array( $pattern_data ) ) {
|
||||
if ( $can_use_cached ) {
|
||||
return $pattern_data;
|
||||
}
|
||||
// If in development mode, clear pattern cache.
|
||||
$theme->delete_pattern_cache();
|
||||
}
|
||||
|
||||
$dirpath = $theme->get_stylesheet_directory() . '/patterns/';
|
||||
|
@ -18,7 +18,6 @@ class Tests_Blocks_WpGetBlockPatterns extends WP_UnitTestCase {
|
||||
*
|
||||
* @param string $theme The theme's slug.
|
||||
* @param array $expected The expected pattern data.
|
||||
|
||||
*/
|
||||
public function test_should_return_block_patterns( $theme, $expected ) {
|
||||
$patterns = _wp_get_block_patterns( wp_get_theme( $theme ) );
|
||||
@ -118,4 +117,37 @@ class Tests_Blocks_WpGetBlockPatterns extends WP_UnitTestCase {
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests that _wp_get_block_patterns() clears existing transient when in theme development mode.
|
||||
*
|
||||
* @ticket 59591
|
||||
*/
|
||||
public function test_should_clear_existing_transient_when_in_development_mode() {
|
||||
$theme = wp_get_theme( 'block-theme-patterns' );
|
||||
|
||||
// Calling the function should set the cache.
|
||||
_wp_get_block_patterns( $theme );
|
||||
$this->assertSameSets(
|
||||
array(
|
||||
'cta.php' => array(
|
||||
'title' => 'Centered Call To Action',
|
||||
'slug' => 'block-theme-patterns/cta',
|
||||
'description' => '',
|
||||
'categories' => array( 'call-to-action' ),
|
||||
),
|
||||
),
|
||||
$theme->get_pattern_cache(),
|
||||
'The transient for block theme patterns should be set'
|
||||
);
|
||||
|
||||
// Calling the function while in theme development mode should clear the cache.
|
||||
$GLOBALS['_wp_tests_development_mode'] = 'theme';
|
||||
_wp_get_block_patterns( $theme );
|
||||
unset( $GLOBALS['_wp_tests_development_mode'] ); // Reset to not pollute other tests.
|
||||
$this->assertFalse(
|
||||
$theme->get_pattern_cache(),
|
||||
'The transient for block theme patterns should have been cleared due to theme development mode'
|
||||
);
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user