Block Editor: Expose api_version in the block type and the REST endpoint.

The new block editor included in 5.6 introduces an api_version property
that indicates which block API version the block is using. 
This commits makes this property available on the block type and the endpoint.

Props TimothyBlynJacobs, gziolo.
Fixes #51529.



git-svn-id: https://develop.svn.wordpress.org/trunk@49224 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
Riad Benguella 2020-10-20 07:52:06 +00:00
parent af767035e7
commit 123a965c70
6 changed files with 22 additions and 1 deletions

View File

@ -207,6 +207,7 @@ function register_block_type_from_metadata( $file_or_folder, $args = array() ) {
'supports' => 'supports', 'supports' => 'supports',
'styles' => 'styles', 'styles' => 'styles',
'example' => 'example', 'example' => 'example',
'apiVersion' => 'api_version',
); );
foreach ( $property_mappings as $key => $mapped_key ) { foreach ( $property_mappings as $key => $mapped_key ) {

View File

@ -16,6 +16,14 @@
*/ */
class WP_Block_Type { class WP_Block_Type {
/**
* Block API version.
*
* @since 5.6.0
* @var int
*/
public $api_version = 1;
/** /**
* Block type key. * Block type key.
* *

View File

@ -256,6 +256,7 @@ class WP_REST_Block_Types_Controller extends WP_REST_Controller {
$schema = $this->get_item_schema(); $schema = $this->get_item_schema();
$extra_fields = array( $extra_fields = array(
'api_version',
'name', 'name',
'title', 'title',
'description', 'description',
@ -365,6 +366,13 @@ class WP_REST_Block_Types_Controller extends WP_REST_Controller {
'title' => 'block-type', 'title' => 'block-type',
'type' => 'object', 'type' => 'object',
'properties' => array( 'properties' => array(
'api_version' => array(
'description' => __( 'Version of block API.' ),
'type' => 'integer',
'default' => 1,
'context' => array( 'embed', 'view', 'edit' ),
'readonly' => true,
),
'title' => array( 'title' => array(
'description' => __( 'Title of block type.' ), 'description' => __( 'Title of block type.' ),
'type' => 'string', 'type' => 'string',

View File

@ -1,4 +1,5 @@
{ {
"apiVersion": 2,
"name": "my-plugin/notice", "name": "my-plugin/notice",
"title": "Notice", "title": "Notice",
"category": "common", "category": "common",

View File

@ -285,6 +285,7 @@ class WP_Test_Block_Register extends WP_UnitTestCase {
); );
$this->assertInstanceOf( 'WP_Block_Type', $result ); $this->assertInstanceOf( 'WP_Block_Type', $result );
$this->assertSame( 2, $result->api_version );
$this->assertSame( 'my-plugin/notice', $result->name ); $this->assertSame( 'my-plugin/notice', $result->name );
$this->assertSame( 'Notice', $result->title ); $this->assertSame( 'Notice', $result->title );
$this->assertSame( 'common', $result->category ); $this->assertSame( 'common', $result->category );

View File

@ -312,7 +312,8 @@ class REST_Block_Type_Controller_Test extends WP_Test_REST_Controller_Testcase {
$response = rest_get_server()->dispatch( $request ); $response = rest_get_server()->dispatch( $request );
$data = $response->get_data(); $data = $response->get_data();
$properties = $data['schema']['properties']; $properties = $data['schema']['properties'];
$this->assertCount( 19, $properties ); $this->assertCount( 20, $properties );
$this->assertArrayHasKey( 'api_version', $properties );
$this->assertArrayHasKey( 'title', $properties ); $this->assertArrayHasKey( 'title', $properties );
$this->assertArrayHasKey( 'icon', $properties ); $this->assertArrayHasKey( 'icon', $properties );
$this->assertArrayHasKey( 'description', $properties ); $this->assertArrayHasKey( 'description', $properties );
@ -431,6 +432,7 @@ class REST_Block_Type_Controller_Test extends WP_Test_REST_Controller_Testcase {
$this->assertSame( $data['is_dynamic'], $block_type->is_dynamic() ); $this->assertSame( $data['is_dynamic'], $block_type->is_dynamic() );
$extra_fields = array( $extra_fields = array(
'api_version',
'name', 'name',
'category', 'category',
'editor_script', 'editor_script',