diff --git a/src/wp-includes/class-wp-block-patterns-registry.php b/src/wp-includes/class-wp-block-patterns-registry.php index 0a4ae6fc9ccd6..3b835c695e201 100644 --- a/src/wp-includes/class-wp-block-patterns-registry.php +++ b/src/wp-includes/class-wp-block-patterns-registry.php @@ -192,6 +192,12 @@ public function get_registered( $pattern_name ) { return null; } + $key = 'registered_block_pattern_' . $pattern_name; + $cached_pattern = wp_cache_get( $key, '', false, $found ); + if ( $found ) { + return $cached_pattern; + } + $pattern = $this->registered_patterns[ $pattern_name ]; if ( ! isset( $pattern['content'] ) && isset( $pattern['file_path'] ) ) { ob_start(); @@ -199,9 +205,9 @@ public function get_registered( $pattern_name ) { $pattern['content'] = ob_get_clean(); $this->registered_patterns[ $pattern_name ]['content'] = $pattern['content']; } - $pattern['content'] = $this->prepare_content( $pattern, get_hooked_blocks() ); + wp_cache_set( $key, $pattern ); return $pattern; } @@ -231,6 +237,14 @@ public function get_all_registered( $outside_init_only = false ) { } continue; } + + $key = 'registered_block_pattern_' . $index; + $cached_pattern = wp_cache_get( $key, '', false, $found ); + if ( $found ) { + $patterns[ $index ] = $cached_pattern; + continue; + } + if ( ! isset( $pattern['content'] ) && isset( $pattern['file_path'] ) ) { ob_start(); include $pattern['file_path']; @@ -242,6 +256,8 @@ public function get_all_registered( $outside_init_only = false ) { } } $patterns[ $index ]['content'] = $this->prepare_content( $pattern, $hooked_blocks ); + + wp_cache_set( $key, $patterns[ $index ] ); } return $patterns; }