PluginProbe
Gutenberg / 14.7.0
Gutenberg v14.7.0
24.0.0 23.9.1 23.9.0 23.8.0 23.7.2 23.7.1 23.7.0 23.6.1 23.6.2 23.6.0 23.5.3 23.5.2 23.5.1 23.5.0 23.4.0 23.3.2 23.3.1 23.3.0 23.2.0 23.2.1 23.2.2 23.1.1 23.1.0 23.0.1 12.6.0 All 403 releases
gutenberg / lib / compat / wordpress-6.0 / block-patterns.php

block-patterns.php in Gutenberg 14.7.0, at lib/compat/wordpress-6.0/block-patterns.php

45 lines 1.3 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Block patterns registration from `theme.json` and Pattern Directory.
4 *
5 * @package gutenberg
6 */
7
8 if ( ! function_exists( '_register_remote_theme_patterns' ) ) {
9 /**
10 * Registers patterns from Pattern Directory provided by a theme's
11 * `theme.json` file.
12 */
13 function _register_remote_theme_patterns() {
14 if ( ! apply_filters( 'should_load_remote_block_patterns', true ) ) {
15 return;
16 }
17
18 if ( ! wp_theme_has_theme_json() ) {
19 return;
20 }
21
22 $pattern_settings = WP_Theme_JSON_Resolver_Gutenberg::get_theme_data()->get_patterns();
23 if ( empty( $pattern_settings ) ) {
24 return;
25 }
26
27 $request = new WP_REST_Request( 'GET', '/wp/v2/pattern-directory/patterns' );
28 $request['slug'] = $pattern_settings;
29 $response = rest_do_request( $request );
30 if ( $response->is_error() ) {
31 return;
32 }
33 $patterns = $response->get_data();
34 $patterns_registry = WP_Block_Patterns_Registry::get_instance();
35 foreach ( $patterns as $pattern ) {
36 $pattern_name = sanitize_title( $pattern['title'] );
37 // Some patterns might be already registered as core patterns with the `core` prefix.
38 $is_registered = $patterns_registry->is_registered( $pattern_name ) || $patterns_registry->is_registered( "core/$pattern_name" );
39 if ( ! $is_registered ) {
40 register_block_pattern( $pattern_name, (array) $pattern );
41 }
42 }
43 }
44 }
45