@@ -19,6 +19,14 @@ final class WP_Block_Pattern_Categories_Registry {
1919 */
2020 private $ registered_categories = array ();
2121
22+ /**
23+ * Pattern categories registered outside the `init` action.
24+ *
25+ * @since 6.0.0
26+ * @var array[]
27+ */
28+ private $ registered_categories_outside_init = array ();
29+
2230 /**
2331 * Container for the main instance of the class.
2432 *
@@ -50,11 +58,20 @@ public function register( $category_name, $category_properties ) {
5058 return false ;
5159 }
5260
53- $ this -> registered_categories [ $ category_name ] = array_merge (
61+ $ category = array_merge (
5462 array ( 'name ' => $ category_name ),
5563 $ category_properties
5664 );
5765
66+ $ this ->registered_categories [ $ category_name ] = $ category ;
67+
68+ // If the category is registered inside an action other than `init`, store it
69+ // also to a dedicated array. Used to detect deprecated registrations inside
70+ // `admin_init` or `current_screen`.
71+ if ( current_action () && 'init ' !== current_action () ) {
72+ $ this ->registered_categories_outside_init [ $ category_name ] = $ category ;
73+ }
74+
5875 return true ;
5976 }
6077
@@ -78,6 +95,7 @@ public function unregister( $category_name ) {
7895 }
7996
8097 unset( $ this ->registered_categories [ $ category_name ] );
98+ unset( $ this ->registered_categories_outside_init [ $ category_name ] );
8199
82100 return true ;
83101 }
@@ -103,10 +121,15 @@ public function get_registered( $category_name ) {
103121 *
104122 * @since 5.5.0
105123 *
124+ * @param bool $outside_init_only Return only categories registered outside the `init` action.
106125 * @return array[] Array of arrays containing the registered pattern categories properties.
107126 */
108- public function get_all_registered () {
109- return array_values ( $ this ->registered_categories );
127+ public function get_all_registered ( $ outside_init_only = false ) {
128+ return array_values (
129+ $ outside_init_only
130+ ? $ this ->registered_categories_outside_init
131+ : $ this ->registered_categories
132+ );
110133 }
111134
112135 /**
0 commit comments