wppaste
WordPress

WP_REST_Blocks_Controller

Since
5.0.0
Source
wp-includes/rest-api/endpoints/class-wp-rest-blocks-controller.php:20
Controller which provides a REST endpoint for the editor to read, create, edit, and delete synced patterns (formerly called reusable blocks).

Description

Patterns are stored as posts with the wp_block post type.

Compatibility

WordPress
since 5.0.0
  • 6.7.7
  • 6.8.8
  • 6.9.7
  • 7.0.4
  • 7.1.0

Present in every tracked release (6.7.7 to 7.1.0).

Methods · 3

Source code

class WP_REST_Blocks_Controller extends WP_REST_Posts_Controller { 	/**	 * Checks if a pattern can be read.	 *	 * @since 5.0.0	 *	 * @param WP_Post $post Post object that backs the block.	 * @return bool Whether the pattern can be read.	 */	public function check_read_permission( $post ) {		// By default the read_post capability is mapped to edit_posts.		if ( ! current_user_can( 'read_post', $post->ID ) ) {			return false;		} 		return parent::check_read_permission( $post );	} 	/**	 * Filters a response based on the context defined in the schema.	 *	 * @since 5.0.0	 * @since 6.3.0 Adds the `wp_pattern_sync_status` postmeta property to the top level of response.	 *	 * @param array  $data    Response data to filter.	 * @param string $context Context defined in the schema.	 * @return array Filtered response.	 */	public function filter_response_by_context( $data, $context ) {		$data = parent::filter_response_by_context( $data, $context ); 		/*		 * Remove `title.rendered` and `content.rendered` from the response.		 * It doesn't make sense for a pattern to have rendered content on its own,		 * since rendering a block requires it to be inside a post or a page.		 */		unset( $data['title']['rendered'] );		unset( $data['content']['rendered'] ); 		// Add the core wp_pattern_sync_status meta as top level property to the response.		$data['wp_pattern_sync_status'] = isset( $data['meta']['wp_pattern_sync_status'] ) ? $data['meta']['wp_pattern_sync_status'] : '';		unset( $data['meta']['wp_pattern_sync_status'] );		return $data;	} 	/**	 * Retrieves the pattern's schema, conforming to JSON Schema.	 *	 * @since 5.0.0	 *	 * @return array Item schema data.	 */	public function get_item_schema() {		if ( $this->schema ) {			return $this->add_additional_fields_schema( $this->schema );		} 		$schema = parent::get_item_schema(); 		/*		 * Allow all contexts to access `title.raw` and `content.raw`.		 * Clients always need the raw markup of a pattern to do anything useful,		 * e.g. parse it or display it in an editor.		 */		$schema['properties']['title']['properties']['raw']['context']   = array( 'view', 'edit' );		$schema['properties']['content']['properties']['raw']['context'] = array( 'view', 'edit' ); 		/*		 * Remove `title.rendered` and `content.rendered` from the schema.		 * It doesn't make sense for a pattern to have rendered content on its own,		 * since rendering a block requires it to be inside a post or a page.		 */		unset( $schema['properties']['title']['properties']['rendered'] );		unset( $schema['properties']['content']['properties']['rendered'] ); 		$this->schema = $schema; 		return $this->add_additional_fields_schema( $this->schema );	}

Changelog

Introduced in 5.0.0. Unchanged from 6.7.7 through 7.1.0.

  1. 6.7.7
  2. 6.8.8
  3. 6.9.7
  4. 7.0.4
  5. 7.1.0

Signature, return type and hooks compared across 5 parsed releases.

About this page

Parsed data
Generated from the wordpress-develop 6.9.7 tag, from src/wp-includes/rest-api/endpoints/class-wp-rest-blocks-controller.php, and regenerated for each WordPress release so it tracks the code rather than a snapshot of it.
Corrections
Something wrong on this page? Report it and it gets fixed in the next regeneration.