Make WordPress Core


Ignore:
Timestamp:
10/03/2023 06:17:03 PM (3 years ago)
Author:
flixos90
Message:

Editor: Simplify return shape and logic of _wp_get_block_patterns().

Follow up to [56765].

Props spacedmonkey.
Fixes #59490.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-includes/block-patterns.php

    r56765 r56771  
    342342
    343343        foreach ( $themes as $theme ) {
    344                 $pattern_data = _wp_get_block_patterns( $theme );
    345                 $dirpath      = $theme->get_stylesheet_directory() . '/patterns/';
    346                 $text_domain  = $theme->get( 'TextDomain' );
    347 
    348                 foreach ( $pattern_data['patterns'] as $file => $pattern_data ) {
     344                $patterns    = _wp_get_block_patterns( $theme );
     345                $dirpath     = $theme->get_stylesheet_directory() . '/patterns/';
     346                $text_domain = $theme->get( 'TextDomain' );
     347
     348                foreach ( $patterns as $file => $pattern_data ) {
    349349                        if ( $registry->is_registered( $pattern_data['slug'] ) ) {
    350350                                continue;
     
    406406 * @return array Block pattern data.
    407407 */
    408 
    409408function _wp_get_block_patterns( WP_Theme $theme ) {
    410         if ( ! $theme->exists() ) {
    411                 return array(
    412                         'version'  => false,
    413                         'patterns' => array(),
    414                 );
    415         }
    416 
    417         $transient_name = 'wp_theme_patterns_' . $theme->get_stylesheet();
    418         $version        = $theme->get( 'Version' );
    419409        $can_use_cached = ! wp_is_development_mode( 'theme' );
    420410
    421411        if ( $can_use_cached ) {
    422                 $pattern_data = get_transient( $transient_name );
    423                 if ( is_array( $pattern_data ) && $pattern_data['version'] === $version ) {
     412                $pattern_data = $theme->get_pattern_cache();
     413                if ( is_array( $pattern_data ) ) {
    424414                        return $pattern_data;
    425415                }
    426416        }
    427417
    428         $pattern_data = array(
    429                 'version'  => $version,
    430                 'patterns' => array(),
    431         );
    432418        $dirpath      = $theme->get_stylesheet_directory() . '/patterns/';
     419        $pattern_data = array();
    433420
    434421        if ( ! file_exists( $dirpath ) ) {
    435422                if ( $can_use_cached ) {
    436                         set_transient( $transient_name, $pattern_data );
     423                        $theme->set_pattern_cache( $pattern_data );
    437424                }
    438425                return $pattern_data;
     
    441428        if ( ! $files ) {
    442429                if ( $can_use_cached ) {
    443                         set_transient( $transient_name, $pattern_data );
     430                        $theme->set_pattern_cache( $pattern_data );
    444431                }
    445432                return $pattern_data;
     
    474461                                __FUNCTION__,
    475462                                sprintf(
    476                                         /* translators: %s: file name. */
     463                                        /* translators: 1: file name. */
    477464                                        __( 'Could not register file "%s" as a block pattern ("Slug" field missing)' ),
    478465                                        $file
     
    487474                                __FUNCTION__,
    488475                                sprintf(
    489                                         /* translators: %1s: file name; %2s: slug value found. */
     476                                        /* translators: 1: file name; 2: slug value found. */
    490477                                        __( 'Could not register file "%1$s" as a block pattern (invalid slug "%2$s")' ),
    491478                                        $file,
     
    501488                                __FUNCTION__,
    502489                                sprintf(
    503                                         /* translators: %1s: file name. */
     490                                        /* translators: 1: file name. */
    504491                                        __( 'Could not register file "%s" as a block pattern ("Title" field missing)' ),
    505492                                        $file
     
    541528                $key = str_replace( $dirpath, '', $file );
    542529
    543                 $pattern_data['patterns'][ $key ] = $pattern;
     530                $pattern_data[ $key ] = $pattern;
    544531        }
    545532
    546533        if ( $can_use_cached ) {
    547                 set_transient( $transient_name, $pattern_data );
     534                $theme->set_pattern_cache( $pattern_data );
    548535        }
    549536
Note: See TracChangeset for help on using the changeset viewer.