_register_remote_theme_patterns

The timeline below displays how wordpress function _register_remote_theme_patterns has changed across different WordPress versions. If a version is not listed, refer to the next available version below.

WordPress Version: 6.3

/**
 * Registers patterns from Pattern Directory provided by a theme's
 * `theme.json` file.
 *
 * @since 6.0.0
 * @since 6.2.0 Normalized the pattern from the API (snake_case) to the
 *              format expected by `register_block_pattern()` (camelCase).
 * @since 6.3.0 Add 'pattern-directory/theme' to the pattern's 'source'.
 * @access private
 */
function _register_remote_theme_patterns()
{
    /** This filter is documented in wp-includes/block-patterns.php */
    if (!apply_filters('should_load_remote_block_patterns', true)) {
        return;
    }
    if (!wp_theme_has_theme_json()) {
        return;
    }
    $pattern_settings = wp_get_theme_directory_pattern_slugs();
    if (empty($pattern_settings)) {
        return;
    }
    $request = new WP_REST_Request('GET', '/wp/v2/pattern-directory/patterns');
    $request['slug'] = $pattern_settings;
    $response = rest_do_request($request);
    if ($response->is_error()) {
        return;
    }
    $patterns = $response->get_data();
    $patterns_registry = WP_Block_Patterns_Registry::get_instance();
    foreach ($patterns as $pattern) {
        $pattern['source'] = 'pattern-directory/theme';
        $normalized_pattern = wp_normalize_remote_block_pattern($pattern);
        $pattern_name = sanitize_title($normalized_pattern['title']);
        // Some patterns might be already registered as core patterns with the `core` prefix.
        $is_registered = $patterns_registry->is_registered($pattern_name) || $patterns_registry->is_registered("core/{$pattern_name}");
        if (!$is_registered) {
            register_block_pattern($pattern_name, $normalized_pattern);
        }
    }
}

WordPress Version: 6.2

/**
 * Registers patterns from Pattern Directory provided by a theme's
 * `theme.json` file.
 *
 * @since 6.0.0
 * @since 6.2.0 Normalized the pattern from the API (snake_case) to the
 *              format expected by `register_block_pattern()` (camelCase).
 * @access private
 */
function _register_remote_theme_patterns()
{
    /** This filter is documented in wp-includes/block-patterns.php */
    if (!apply_filters('should_load_remote_block_patterns', true)) {
        return;
    }
    if (!wp_theme_has_theme_json()) {
        return;
    }
    $pattern_settings = WP_Theme_JSON_Resolver::get_theme_data()->get_patterns();
    if (empty($pattern_settings)) {
        return;
    }
    $request = new WP_REST_Request('GET', '/wp/v2/pattern-directory/patterns');
    $request['slug'] = $pattern_settings;
    $response = rest_do_request($request);
    if ($response->is_error()) {
        return;
    }
    $patterns = $response->get_data();
    $patterns_registry = WP_Block_Patterns_Registry::get_instance();
    foreach ($patterns as $pattern) {
        $normalized_pattern = wp_normalize_remote_block_pattern($pattern);
        $pattern_name = sanitize_title($normalized_pattern['title']);
        // Some patterns might be already registered as core patterns with the `core` prefix.
        $is_registered = $patterns_registry->is_registered($pattern_name) || $patterns_registry->is_registered("core/{$pattern_name}");
        if (!$is_registered) {
            register_block_pattern($pattern_name, $normalized_pattern);
        }
    }
}

WordPress Version: 6.1

/**
 * Registers patterns from Pattern Directory provided by a theme's
 * `theme.json` file.
 *
 * @since 6.0.0
 * @access private
 */
function _register_remote_theme_patterns()
{
    /** This filter is documented in wp-includes/block-patterns.php */
    if (!apply_filters('should_load_remote_block_patterns', true)) {
        return;
    }
    if (!WP_Theme_JSON_Resolver::theme_has_support()) {
        return;
    }
    $pattern_settings = WP_Theme_JSON_Resolver::get_theme_data()->get_patterns();
    if (empty($pattern_settings)) {
        return;
    }
    $request = new WP_REST_Request('GET', '/wp/v2/pattern-directory/patterns');
    $request['slug'] = $pattern_settings;
    $response = rest_do_request($request);
    if ($response->is_error()) {
        return;
    }
    $patterns = $response->get_data();
    $patterns_registry = WP_Block_Patterns_Registry::get_instance();
    foreach ($patterns as $pattern) {
        $pattern_name = sanitize_title($pattern['title']);
        // Some patterns might be already registered as core patterns with the `core` prefix.
        $is_registered = $patterns_registry->is_registered($pattern_name) || $patterns_registry->is_registered("core/{$pattern_name}");
        if (!$is_registered) {
            register_block_pattern($pattern_name, (array) $pattern);
        }
    }
}