Title: WP_Block_Pattern_Categories_Registry
Published: August 11, 2020
Last modified: April 28, 2025

---

# class WP_Block_Pattern_Categories_Registry {}

## In this article

 * [Methods](https://developer.wordpress.org/reference/classes/wp_block_pattern_categories_registry/?output_format=md#methods)
 * [Source](https://developer.wordpress.org/reference/classes/wp_block_pattern_categories_registry/?output_format=md#source)

[ Back to top](https://developer.wordpress.org/reference/classes/wp_block_pattern_categories_registry/?output_format=md#wp--skip-link--target)

Class used for interacting with block pattern categories.

## 󠀁[Methods](https://developer.wordpress.org/reference/classes/wp_block_pattern_categories_registry/?output_format=md#methods)󠁿

| Name | Description | 
| [WP_Block_Pattern_Categories_Registry::get_all_registered](https://developer.wordpress.org/reference/classes/wp_block_pattern_categories_registry/get_all_registered/) | Retrieves all registered pattern categories. | 
| [WP_Block_Pattern_Categories_Registry::get_instance](https://developer.wordpress.org/reference/classes/wp_block_pattern_categories_registry/get_instance/) | Utility method to retrieve the main instance of the class. | 
| [WP_Block_Pattern_Categories_Registry::get_registered](https://developer.wordpress.org/reference/classes/wp_block_pattern_categories_registry/get_registered/) | Retrieves an array containing the properties of a registered pattern category. | 
| [WP_Block_Pattern_Categories_Registry::is_registered](https://developer.wordpress.org/reference/classes/wp_block_pattern_categories_registry/is_registered/) | Checks if a pattern category is registered. | 
| [WP_Block_Pattern_Categories_Registry::register](https://developer.wordpress.org/reference/classes/wp_block_pattern_categories_registry/register/) | Registers a pattern category. | 
| [WP_Block_Pattern_Categories_Registry::unregister](https://developer.wordpress.org/reference/classes/wp_block_pattern_categories_registry/unregister/) | Unregisters a pattern category. |

## 󠀁[Source](https://developer.wordpress.org/reference/classes/wp_block_pattern_categories_registry/?output_format=md#source)󠁿

    ```php
    final class WP_Block_Pattern_Categories_Registry {
    	/**
    	 * Registered block pattern categories array.
    	 *
    	 * @since 5.5.0
    	 * @var array[]
    	 */
    	private $registered_categories = array();

    	/**
    	 * Pattern categories registered outside the `init` action.
    	 *
    	 * @since 6.0.0
    	 * @var array[]
    	 */
    	private $registered_categories_outside_init = array();

    	/**
    	 * Container for the main instance of the class.
    	 *
    	 * @since 5.5.0
    	 * @var WP_Block_Pattern_Categories_Registry|null
    	 */
    	private static $instance = null;

    	/**
    	 * Registers a pattern category.
    	 *
    	 * @since 5.5.0
    	 *
    	 * @param string $category_name       Pattern category name including namespace.
    	 * @param array  $category_properties {
    	 *     List of properties for the block pattern category.
    	 *
    	 *     @type string $label Required. A human-readable label for the pattern category.
    	 * }
    	 * @return bool 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 ) ) {
    			_doing_it_wrong(
    				__METHOD__,
    				__( 'Block pattern category name must be a string.' ),
    				'5.5.0'
    			);
    			return false;
    		}

    		$category = array_merge(
    			array( 'name' => $category_name ),
    			$category_properties
    		);

    		$this->registered_categories[ $category_name ] = $category;

    		// If the category is registered inside an action other than `init`, store it
    		// also to a dedicated array. Used to detect deprecated registrations inside
    		// `admin_init` or `current_screen`.
    		if ( current_action() && 'init' !== current_action() ) {
    			$this->registered_categories_outside_init[ $category_name ] = $category;
    		}

    		return true;
    	}

    	/**
    	 * Unregisters a pattern category.
    	 *
    	 * @since 5.5.0
    	 *
    	 * @param string $category_name Pattern category name including namespace.
    	 * @return bool True if the pattern was unregistered with success and false otherwise.
    	 */
    	public function unregister( $category_name ) {
    		if ( ! $this->is_registered( $category_name ) ) {
    			_doing_it_wrong(
    				__METHOD__,
    				/* translators: %s: Block pattern name. */
    				sprintf( __( 'Block pattern category "%s" not found.' ), $category_name ),
    				'5.5.0'
    			);
    			return false;
    		}

    		unset( $this->registered_categories[ $category_name ] );
    		unset( $this->registered_categories_outside_init[ $category_name ] );

    		return true;
    	}

    	/**
    	 * Retrieves an array containing the properties of a registered pattern category.
    	 *
    	 * @since 5.5.0
    	 *
    	 * @param string $category_name Pattern category name including namespace.
    	 * @return array|null Registered pattern properties, or `null` if the pattern category is not registered.
    	 */
    	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.
    	 *
    	 * @since 5.5.0
    	 *
    	 * @param bool $outside_init_only Return only categories registered outside the `init` action.
    	 * @return array[] Array of arrays containing the registered pattern categories properties.
    	 */
    	public function get_all_registered( $outside_init_only = false ) {
    		return array_values(
    			$outside_init_only
    				? $this->registered_categories_outside_init
    				: $this->registered_categories
    		);
    	}

    	/**
    	 * Checks if a pattern category is registered.
    	 *
    	 * @since 5.5.0
    	 *
    	 * @param string|null $category_name Pattern category name including namespace.
    	 * @return bool True if the pattern category is registered, false otherwise.
    	 */
    	public function is_registered( $category_name ) {
    		return isset( $category_name, $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.5.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;
    	}
    }
    ```

[View all references](https://developer.wordpress.org/reference/files/wp-includes/class-wp-block-pattern-categories-registry.php/)
[View on Trac](https://core.trac.wordpress.org/browser/tags/6.9.4/src/wp-includes/class-wp-block-pattern-categories-registry.php#L14)
[View on GitHub](https://github.com/WordPress/wordpress-develop/blob/6.9.4/src/wp-includes/class-wp-block-pattern-categories-registry.php#L14-L164)

## User Contributed Notes

You must [log in](https://login.wordpress.org/?redirect_to=https%3A%2F%2Fdeveloper.wordpress.org%2Freference%2Fclasses%2Fwp_block_pattern_categories_registry%2F)
before being able to contribute a note or feedback.