author | ymh <ymh.work@gmail.com> |
Fri, 05 Sep 2025 18:52:52 +0200 | |
changeset 22 | 8c2e4d02f4ef |
parent 21 | 48c4eec2b7e6 |
permissions | -rw-r--r-- |
16 | 1 |
<?php |
2 |
/** |
|
3 |
* Blocks API: WP_Block_Patterns_Registry class |
|
4 |
* |
|
5 |
* @package WordPress |
|
6 |
* @subpackage Blocks |
|
7 |
* @since 5.5.0 |
|
8 |
*/ |
|
9 |
||
10 |
/** |
|
19 | 11 |
* Class used for interacting with block patterns. |
16 | 12 |
* |
13 |
* @since 5.5.0 |
|
14 |
*/ |
|
21
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
15 |
#[AllowDynamicProperties] |
16 | 16 |
final class WP_Block_Patterns_Registry { |
17 |
/** |
|
19 | 18 |
* Registered block patterns array. |
16 | 19 |
* |
18 | 20 |
* @since 5.5.0 |
19 | 21 |
* @var array[] |
16 | 22 |
*/ |
23 |
private $registered_patterns = array(); |
|
24 |
||
25 |
/** |
|
19 | 26 |
* Patterns registered outside the `init` action. |
27 |
* |
|
28 |
* @since 6.0.0 |
|
29 |
* @var array[] |
|
30 |
*/ |
|
31 |
private $registered_patterns_outside_init = array(); |
|
32 |
||
33 |
/** |
|
16 | 34 |
* Container for the main instance of the class. |
35 |
* |
|
18 | 36 |
* @since 5.5.0 |
16 | 37 |
* @var WP_Block_Patterns_Registry|null |
38 |
*/ |
|
39 |
private static $instance = null; |
|
40 |
||
41 |
/** |
|
19 | 42 |
* Registers a block pattern. |
16 | 43 |
* |
44 |
* @since 5.5.0 |
|
19 | 45 |
* @since 5.8.0 Added support for the `blockTypes` property. |
21
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
46 |
* @since 6.1.0 Added support for the `postTypes` property. |
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
47 |
* @since 6.2.0 Added support for the `templateTypes` property. |
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
48 |
* @since 6.5.0 Added support for the `filePath` property. |
16 | 49 |
* |
19 | 50 |
* @param string $pattern_name Block pattern name including namespace. |
51 |
* @param array $pattern_properties { |
|
52 |
* List of properties for the block pattern. |
|
53 |
* |
|
21
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
54 |
* @type string $title Required. A human-readable title for the pattern. |
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
55 |
* @type string $content Optional. Block HTML markup for the pattern. |
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
56 |
* If not provided, the content will be retrieved from the `filePath` if set. |
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
57 |
* If both `content` and `filePath` are not set, the pattern will not be registered. |
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
58 |
* @type string $description Optional. Visually hidden text used to describe the pattern |
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
59 |
* in the inserter. A description is optional, but is strongly |
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
60 |
* encouraged when the title does not fully describe what the |
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
61 |
* pattern does. The description will help users discover the |
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
62 |
* pattern while searching. |
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
63 |
* @type int $viewportWidth Optional. The intended width of the pattern to allow for a scaled |
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
64 |
* preview within the pattern inserter. |
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
65 |
* @type bool $inserter Optional. Determines whether the pattern is visible in inserter. |
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
66 |
* To hide a pattern so that it can only be inserted programmatically, |
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
67 |
* set this to false. Default true. |
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
68 |
* @type string[] $categories Optional. A list of registered pattern categories used to group |
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
69 |
* block patterns. Block patterns can be shown on multiple categories. |
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
70 |
* A category must be registered separately in order to be used here. |
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
71 |
* @type string[] $keywords Optional. A list of aliases or keywords that help users discover |
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
72 |
* the pattern while searching. |
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
73 |
* @type string[] $blockTypes Optional. A list of block names including namespace that could use |
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
74 |
* the block pattern in certain contexts (placeholder, transforms). |
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
75 |
* The block pattern is available in the block editor inserter |
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
76 |
* regardless of this list of block names. |
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
77 |
* Certain blocks support further specificity besides the block name |
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
78 |
* (e.g. for `core/template-part` you can specify areas |
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
79 |
* like `core/template-part/header` or `core/template-part/footer`). |
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
80 |
* @type string[] $postTypes Optional. An array of post types that the pattern is restricted |
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
81 |
* to be used with. The pattern will only be available when editing one |
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
82 |
* of the post types passed on the array. For all the other post types |
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
83 |
* not part of the array the pattern is not available at all. |
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
84 |
* @type string[] $templateTypes Optional. An array of template types where the pattern fits. |
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
85 |
* @type string $filePath Optional. The full path to the file containing the block pattern content. |
19 | 86 |
* } |
16 | 87 |
* @return bool True if the pattern was registered with success and false otherwise. |
88 |
*/ |
|
89 |
public function register( $pattern_name, $pattern_properties ) { |
|
90 |
if ( ! isset( $pattern_name ) || ! is_string( $pattern_name ) ) { |
|
18 | 91 |
_doing_it_wrong( |
92 |
__METHOD__, |
|
93 |
__( 'Pattern name must be a string.' ), |
|
94 |
'5.5.0' |
|
95 |
); |
|
16 | 96 |
return false; |
97 |
} |
|
98 |
||
99 |
if ( ! isset( $pattern_properties['title'] ) || ! is_string( $pattern_properties['title'] ) ) { |
|
18 | 100 |
_doing_it_wrong( |
101 |
__METHOD__, |
|
102 |
__( 'Pattern title must be a string.' ), |
|
103 |
'5.5.0' |
|
104 |
); |
|
16 | 105 |
return false; |
106 |
} |
|
107 |
||
21
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
108 |
if ( ! isset( $pattern_properties['filePath'] ) ) { |
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
109 |
if ( ! isset( $pattern_properties['content'] ) || ! is_string( $pattern_properties['content'] ) ) { |
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
110 |
_doing_it_wrong( |
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
111 |
__METHOD__, |
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
112 |
__( 'Pattern content must be a string.' ), |
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
113 |
'5.5.0' |
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
114 |
); |
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
115 |
return false; |
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
116 |
} |
16 | 117 |
} |
118 |
||
19 | 119 |
$pattern = array_merge( |
16 | 120 |
$pattern_properties, |
121 |
array( 'name' => $pattern_name ) |
|
122 |
); |
|
21
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
123 |
|
19 | 124 |
$this->registered_patterns[ $pattern_name ] = $pattern; |
125 |
||
126 |
// If the pattern is registered inside an action other than `init`, store it |
|
127 |
// also to a dedicated array. Used to detect deprecated registrations inside |
|
128 |
// `admin_init` or `current_screen`. |
|
129 |
if ( current_action() && 'init' !== current_action() ) { |
|
130 |
$this->registered_patterns_outside_init[ $pattern_name ] = $pattern; |
|
131 |
} |
|
16 | 132 |
|
133 |
return true; |
|
134 |
} |
|
135 |
||
136 |
/** |
|
19 | 137 |
* Unregisters a block pattern. |
16 | 138 |
* |
139 |
* @since 5.5.0 |
|
140 |
* |
|
19 | 141 |
* @param string $pattern_name Block pattern name including namespace. |
16 | 142 |
* @return bool True if the pattern was unregistered with success and false otherwise. |
143 |
*/ |
|
144 |
public function unregister( $pattern_name ) { |
|
145 |
if ( ! $this->is_registered( $pattern_name ) ) { |
|
18 | 146 |
_doing_it_wrong( |
147 |
__METHOD__, |
|
148 |
/* translators: %s: Pattern name. */ |
|
149 |
sprintf( __( 'Pattern "%s" not found.' ), $pattern_name ), |
|
150 |
'5.5.0' |
|
151 |
); |
|
16 | 152 |
return false; |
153 |
} |
|
154 |
||
155 |
unset( $this->registered_patterns[ $pattern_name ] ); |
|
19 | 156 |
unset( $this->registered_patterns_outside_init[ $pattern_name ] ); |
16 | 157 |
|
158 |
return true; |
|
159 |
} |
|
160 |
||
161 |
/** |
|
21
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
162 |
* Retrieves the content of a registered block pattern. |
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
163 |
* |
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
164 |
* @since 6.5.0 |
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
165 |
* |
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
166 |
* @param string $pattern_name Block pattern name including namespace. |
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
167 |
* @param bool $outside_init_only Optional. Return only patterns registered outside the `init` action. Default false. |
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
168 |
* @return string The content of the block pattern. |
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
169 |
*/ |
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
170 |
private function get_content( $pattern_name, $outside_init_only = false ) { |
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
171 |
if ( $outside_init_only ) { |
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
172 |
$patterns = &$this->registered_patterns_outside_init; |
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
173 |
} else { |
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
174 |
$patterns = &$this->registered_patterns; |
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
175 |
} |
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
176 |
if ( ! isset( $patterns[ $pattern_name ]['content'] ) && isset( $patterns[ $pattern_name ]['filePath'] ) ) { |
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
177 |
ob_start(); |
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
178 |
include $patterns[ $pattern_name ]['filePath']; |
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
179 |
$patterns[ $pattern_name ]['content'] = ob_get_clean(); |
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
180 |
unset( $patterns[ $pattern_name ]['filePath'] ); |
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
181 |
} |
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
182 |
return $patterns[ $pattern_name ]['content']; |
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
183 |
} |
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
184 |
|
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
185 |
/** |
19 | 186 |
* Retrieves an array containing the properties of a registered block pattern. |
16 | 187 |
* |
188 |
* @since 5.5.0 |
|
189 |
* |
|
19 | 190 |
* @param string $pattern_name Block pattern name including namespace. |
16 | 191 |
* @return array Registered pattern properties. |
192 |
*/ |
|
193 |
public function get_registered( $pattern_name ) { |
|
194 |
if ( ! $this->is_registered( $pattern_name ) ) { |
|
195 |
return null; |
|
196 |
} |
|
197 |
||
21
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
198 |
$pattern = $this->registered_patterns[ $pattern_name ]; |
22
8c2e4d02f4ef
Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents:
21
diff
changeset
|
199 |
$content = $this->get_content( $pattern_name ); |
8c2e4d02f4ef
Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents:
21
diff
changeset
|
200 |
$pattern['content'] = apply_block_hooks_to_content( |
8c2e4d02f4ef
Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents:
21
diff
changeset
|
201 |
$content, |
8c2e4d02f4ef
Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents:
21
diff
changeset
|
202 |
$pattern, |
8c2e4d02f4ef
Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents:
21
diff
changeset
|
203 |
'insert_hooked_blocks_and_set_ignored_hooked_blocks_metadata' |
8c2e4d02f4ef
Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents:
21
diff
changeset
|
204 |
); |
21
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
205 |
|
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
206 |
return $pattern; |
16 | 207 |
} |
208 |
||
209 |
/** |
|
19 | 210 |
* Retrieves all registered block patterns. |
16 | 211 |
* |
212 |
* @since 5.5.0 |
|
213 |
* |
|
19 | 214 |
* @param bool $outside_init_only Return only patterns registered outside the `init` action. |
215 |
* @return array[] Array of arrays containing the registered block patterns properties, |
|
216 |
* and per style. |
|
16 | 217 |
*/ |
19 | 218 |
public function get_all_registered( $outside_init_only = false ) { |
21
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
219 |
$patterns = $outside_init_only |
19 | 220 |
? $this->registered_patterns_outside_init |
21
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
221 |
: $this->registered_patterns; |
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
222 |
$hooked_blocks = get_hooked_blocks(); |
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
223 |
|
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
224 |
foreach ( $patterns as $index => $pattern ) { |
22
8c2e4d02f4ef
Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents:
21
diff
changeset
|
225 |
$content = $this->get_content( $pattern['name'], $outside_init_only ); |
8c2e4d02f4ef
Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents:
21
diff
changeset
|
226 |
$patterns[ $index ]['content'] = apply_block_hooks_to_content( |
8c2e4d02f4ef
Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents:
21
diff
changeset
|
227 |
$content, |
8c2e4d02f4ef
Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents:
21
diff
changeset
|
228 |
$pattern, |
8c2e4d02f4ef
Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents:
21
diff
changeset
|
229 |
'insert_hooked_blocks_and_set_ignored_hooked_blocks_metadata' |
8c2e4d02f4ef
Update WordPress to latest version (6.7)
ymh <ymh.work@gmail.com>
parents:
21
diff
changeset
|
230 |
); |
21
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
231 |
} |
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
232 |
|
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
233 |
return array_values( $patterns ); |
16 | 234 |
} |
235 |
||
236 |
/** |
|
19 | 237 |
* Checks if a block pattern is registered. |
16 | 238 |
* |
239 |
* @since 5.5.0 |
|
240 |
* |
|
19 | 241 |
* @param string $pattern_name Block pattern name including namespace. |
16 | 242 |
* @return bool True if the pattern is registered, false otherwise. |
243 |
*/ |
|
244 |
public function is_registered( $pattern_name ) { |
|
245 |
return isset( $this->registered_patterns[ $pattern_name ] ); |
|
246 |
} |
|
247 |
||
21
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
248 |
public function __wakeup() { |
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
249 |
if ( ! $this->registered_patterns ) { |
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
250 |
return; |
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
251 |
} |
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
252 |
if ( ! is_array( $this->registered_patterns ) ) { |
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
253 |
throw new UnexpectedValueException(); |
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
254 |
} |
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
255 |
foreach ( $this->registered_patterns as $value ) { |
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
256 |
if ( ! is_array( $value ) ) { |
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
257 |
throw new UnexpectedValueException(); |
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
258 |
} |
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
259 |
} |
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
260 |
$this->registered_patterns_outside_init = array(); |
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
261 |
} |
48c4eec2b7e6
Add CLAUDE.md documentation and sync WordPress core files
ymh <ymh.work@gmail.com>
parents:
19
diff
changeset
|
262 |
|
16 | 263 |
/** |
264 |
* Utility method to retrieve the main instance of the class. |
|
265 |
* |
|
266 |
* The instance will be created if it does not exist yet. |
|
267 |
* |
|
268 |
* @since 5.5.0 |
|
269 |
* |
|
270 |
* @return WP_Block_Patterns_Registry The main instance. |
|
271 |
*/ |
|
272 |
public static function get_instance() { |
|
273 |
if ( null === self::$instance ) { |
|
274 |
self::$instance = new self(); |
|
275 |
} |
|
276 |
||
277 |
return self::$instance; |
|
278 |
} |
|
279 |
} |
|
280 |
||
281 |
/** |
|
19 | 282 |
* Registers a new block pattern. |
16 | 283 |
* |
284 |
* @since 5.5.0 |
|
285 |
* |
|
19 | 286 |
* @param string $pattern_name Block pattern name including namespace. |
287 |
* @param array $pattern_properties List of properties for the block pattern. |
|
288 |
* See WP_Block_Patterns_Registry::register() for accepted arguments. |
|
16 | 289 |
* @return bool True if the pattern was registered with success and false otherwise. |
290 |
*/ |
|
291 |
function register_block_pattern( $pattern_name, $pattern_properties ) { |
|
292 |
return WP_Block_Patterns_Registry::get_instance()->register( $pattern_name, $pattern_properties ); |
|
293 |
} |
|
294 |
||
295 |
/** |
|
19 | 296 |
* Unregisters a block pattern. |
16 | 297 |
* |
298 |
* @since 5.5.0 |
|
299 |
* |
|
19 | 300 |
* @param string $pattern_name Block pattern name including namespace. |
16 | 301 |
* @return bool True if the pattern was unregistered with success and false otherwise. |
302 |
*/ |
|
303 |
function unregister_block_pattern( $pattern_name ) { |
|
304 |
return WP_Block_Patterns_Registry::get_instance()->unregister( $pattern_name ); |
|
305 |
} |