-
Notifications
You must be signed in to change notification settings - Fork 4k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add Block Pattern Categories support (#22164)
- Loading branch information
1 parent
e4b6730
commit a105007
Showing
16 changed files
with
405 additions
and
84 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,139 @@ | ||
<?php | ||
/** | ||
* Blocks API: WP_Block_Pattern_Categories_Registry class | ||
* | ||
* @package Gutenberg | ||
*/ | ||
|
||
/** | ||
* Class used for interacting with block pattern categories. | ||
*/ | ||
final class WP_Block_Pattern_Categories_Registry { | ||
/** | ||
* Registered block pattern categories array. | ||
* | ||
* @var array | ||
*/ | ||
private $registered_categories = array(); | ||
|
||
/** | ||
* Container for the main instance of the class. | ||
* | ||
* @var WP_Block_Pattern_Categories_Registry|null | ||
*/ | ||
private static $instance = null; | ||
|
||
/** | ||
* Registers a pattern category. | ||
* | ||
* @param string $category_name Pattern category name. | ||
* @param array $category_properties Array containing the properties of the category: label. | ||
* @return boolean True if the pattern was registered with success and false otherwise. | ||
*/ | ||
public function register( $category_name, $category_properties ) { | ||
if ( ! isset( $category_name ) || ! is_string( $category_name ) ) { | ||
$message = __( 'Block pattern category name must be a string.', 'gutenberg' ); | ||
_doing_it_wrong( __METHOD__, $message, '8.1.0' ); | ||
return false; | ||
} | ||
|
||
$this->registered_categories[ $category_name ] = array_merge( | ||
array( 'name' => $category_name ), | ||
$category_properties | ||
); | ||
|
||
return true; | ||
} | ||
|
||
/** | ||
* Unregisters a pattern category. | ||
* | ||
* @param string $category_name Pattern name including namespace. | ||
* @return boolean True if the pattern was unregistered with success and false otherwise. | ||
*/ | ||
public function unregister( $category_name ) { | ||
if ( ! $this->is_registered( $category_name ) ) { | ||
/* translators: 1: Block pattern name. */ | ||
$message = sprintf( __( 'Block pattern category "%1$s" not found.', 'gutenberg' ), $category_name ); | ||
_doing_it_wrong( __METHOD__, $message, '8.1.0' ); | ||
return false; | ||
} | ||
|
||
unset( $this->registered_categories[ $category_name ] ); | ||
|
||
return true; | ||
} | ||
|
||
/** | ||
* Retrieves an array containing the properties of a registered pattern category. | ||
* | ||
* @param string $category_name Pattern category name. | ||
* @return array Registered pattern properties. | ||
*/ | ||
public function get_registered( $category_name ) { | ||
if ( ! $this->is_registered( $category_name ) ) { | ||
return null; | ||
} | ||
|
||
return $this->registered_categories[ $category_name ]; | ||
} | ||
|
||
/** | ||
* Retrieves all registered pattern categories. | ||
* | ||
* @return array Array of arrays containing the registered pattern categories properties. | ||
*/ | ||
public function get_all_registered() { | ||
return array_values( $this->registered_categories ); | ||
} | ||
|
||
/** | ||
* Checks if a pattern category is registered. | ||
* | ||
* @param string $category_name Pattern category name. | ||
* @return bool True if the pattern category is registered, false otherwise. | ||
*/ | ||
public function is_registered( $category_name ) { | ||
return isset( $this->registered_categories[ $category_name ] ); | ||
} | ||
|
||
/** | ||
* Utility method to retrieve the main instance of the class. | ||
* | ||
* The instance will be created if it does not exist yet. | ||
* | ||
* @since 5.3.0 | ||
* | ||
* @return WP_Block_Pattern_Categories_Registry The main instance. | ||
*/ | ||
public static function get_instance() { | ||
if ( null === self::$instance ) { | ||
self::$instance = new self(); | ||
} | ||
|
||
return self::$instance; | ||
} | ||
} | ||
|
||
/** | ||
* Registers a new pattern category. | ||
* | ||
* @param string $category_name Pattern category name. | ||
* @param array $category_properties Array containing the properties of the category. | ||
* | ||
* @return boolean True if the pattern category was registered with success and false otherwise. | ||
*/ | ||
function register_block_pattern_category( $category_name, $category_properties ) { | ||
return WP_Block_Pattern_Categories_Registry::get_instance()->register( $category_name, $category_properties ); | ||
} | ||
|
||
/** | ||
* Unregisters a pattern category. | ||
* | ||
* @param string $category_name Pattern category name including namespace. | ||
* | ||
* @return boolean True if the pattern category was unregistered with success and false otherwise. | ||
*/ | ||
function unregister_block_pattern_category( $category_name ) { | ||
return WP_Block_Pattern_Categories_Registry::get_instance()->unregister( $category_name ); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.