Make WordPress Core


Ignore:
Timestamp:
10/03/2023 06:17:03 PM (12 months 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.