mirror of
git://develop.git.wordpress.org/
synced 2025-02-13 11:14:42 +01:00
Add fields to WP_Block_Type
As part of #47620 and the RFC for block registeration. Server registered blocks are missing some fields. These changeset includes them. Props spacedmonkey, aduth. Fixes #48529. git-svn-id: https://develop.svn.wordpress.org/trunk@47875 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
parent
e0ede89881
commit
822ca9ebc7
@ -2234,7 +2234,7 @@ function get_block_categories( $post ) {
|
||||
function get_block_editor_server_block_settings() {
|
||||
$block_registry = WP_Block_Type_Registry::get_instance();
|
||||
$blocks = array();
|
||||
$keys_to_pick = array( 'title', 'description', 'icon', 'category', 'keywords', 'parent', 'supports', 'attributes', 'styles' );
|
||||
$keys_to_pick = array( 'title', 'description', 'icon', 'category', 'keywords', 'parent', 'supports', 'attributes', 'styles', 'textdomain', 'example' );
|
||||
|
||||
foreach ( $block_registry->get_all_registered() as $block_name => $block_type ) {
|
||||
foreach ( $keys_to_pick as $key ) {
|
||||
|
@ -15,6 +15,7 @@
|
||||
* @see register_block_type()
|
||||
*/
|
||||
class WP_Block_Type {
|
||||
|
||||
/**
|
||||
* Block type key.
|
||||
*
|
||||
@ -23,21 +24,81 @@ class WP_Block_Type {
|
||||
*/
|
||||
public $name;
|
||||
|
||||
/**
|
||||
* @since 5.5.0
|
||||
* @var string
|
||||
*/
|
||||
public $title = '';
|
||||
|
||||
/**
|
||||
* @since 5.5.0
|
||||
* @var string
|
||||
*/
|
||||
public $category = '';
|
||||
|
||||
/**
|
||||
* @since 5.5.0
|
||||
* @var array|null
|
||||
*/
|
||||
public $parent = null;
|
||||
|
||||
/**
|
||||
* @since 5.5.0
|
||||
* @var string
|
||||
*/
|
||||
public $icon = '';
|
||||
|
||||
/**
|
||||
* @since 5.5.0
|
||||
* @var string
|
||||
*/
|
||||
public $description = '';
|
||||
|
||||
/**
|
||||
* @since 5.5.0
|
||||
* @var array
|
||||
*/
|
||||
public $keywords = array();
|
||||
|
||||
/**
|
||||
* @since 5.5.0
|
||||
* @var string|null
|
||||
*/
|
||||
public $textdomain = null;
|
||||
|
||||
/**
|
||||
* @since 5.5.0
|
||||
* @var array
|
||||
*/
|
||||
public $styles = array();
|
||||
|
||||
/**
|
||||
* @since 5.5.0
|
||||
* @var array
|
||||
*/
|
||||
public $supports = array();
|
||||
|
||||
/**
|
||||
* @since 5.5.0
|
||||
* @var array|null
|
||||
*/
|
||||
public $example = null;
|
||||
|
||||
/**
|
||||
* Block type render callback.
|
||||
*
|
||||
* @since 5.0.0
|
||||
* @var callable
|
||||
*/
|
||||
public $render_callback;
|
||||
public $render_callback = null;
|
||||
|
||||
/**
|
||||
* Block type attributes property schemas.
|
||||
*
|
||||
* @since 5.0.0
|
||||
* @var array
|
||||
* @var array|null
|
||||
*/
|
||||
public $attributes;
|
||||
public $attributes = null;
|
||||
|
||||
/**
|
||||
* Block type editor script handle.
|
||||
@ -45,7 +106,7 @@ class WP_Block_Type {
|
||||
* @since 5.0.0
|
||||
* @var string
|
||||
*/
|
||||
public $editor_script;
|
||||
public $editor_script = '';
|
||||
|
||||
/**
|
||||
* Block type front end script handle.
|
||||
@ -53,7 +114,7 @@ class WP_Block_Type {
|
||||
* @since 5.0.0
|
||||
* @var string
|
||||
*/
|
||||
public $script;
|
||||
public $script = '';
|
||||
|
||||
/**
|
||||
* Block type editor style handle.
|
||||
@ -61,7 +122,7 @@ class WP_Block_Type {
|
||||
* @since 5.0.0
|
||||
* @var string
|
||||
*/
|
||||
public $editor_style;
|
||||
public $editor_style = '';
|
||||
|
||||
/**
|
||||
* Block type front end style handle.
|
||||
@ -69,20 +130,21 @@ class WP_Block_Type {
|
||||
* @since 5.0.0
|
||||
* @var string
|
||||
*/
|
||||
public $style;
|
||||
public $style = '';
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
*
|
||||
* Will populate object properties from the provided arguments.
|
||||
*
|
||||
* @since 5.0.0
|
||||
*
|
||||
* @see register_block_type()
|
||||
*
|
||||
* @param string $block_type Block type name including namespace.
|
||||
* @param array|string $args Optional. Array or string of arguments for registering a block type.
|
||||
* Default empty array.
|
||||
*
|
||||
* @since 5.0.0
|
||||
*
|
||||
* @see register_block_type()
|
||||
*
|
||||
*/
|
||||
public function __construct( $block_type, $args = array() ) {
|
||||
$this->name = $block_type;
|
||||
|
@ -825,6 +825,7 @@ class Tests_Admin_Includes_Post extends WP_UnitTestCase {
|
||||
function test_get_block_editor_server_block_settings() {
|
||||
$name = 'core/test';
|
||||
$settings = array(
|
||||
'category' => 'common',
|
||||
'icon' => 'text',
|
||||
'render_callback' => 'foo',
|
||||
);
|
||||
@ -836,7 +837,15 @@ class Tests_Admin_Includes_Post extends WP_UnitTestCase {
|
||||
unregister_block_type( $name );
|
||||
|
||||
$this->assertArrayHasKey( $name, $blocks );
|
||||
$this->assertSame( array( 'icon' => 'text' ), $blocks[ $name ] );
|
||||
$this->assertEquals( array(
|
||||
'title' => '',
|
||||
'description' => '',
|
||||
'category' => 'common',
|
||||
'icon' => 'text',
|
||||
'keywords' => array(),
|
||||
'supports' => array(),
|
||||
'styles' => array(),
|
||||
), $blocks[ $name ] );
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -349,6 +349,31 @@ class WP_Test_Block_Type extends WP_UnitTestCase {
|
||||
return json_encode( $attributes );
|
||||
}
|
||||
|
||||
/**
|
||||
* @ticket 48529
|
||||
*/
|
||||
public function test_register_block() {
|
||||
$block_type = new WP_Block_Type( 'core/fake', array(
|
||||
'title' => 'Test title',
|
||||
'category' => 'Test category',
|
||||
'parent' => array( 'core/third-party' ),
|
||||
'icon' => 'icon.png',
|
||||
'description' => 'test description',
|
||||
'keywords' => array( 'test keyword' ),
|
||||
'textdomain' => 'test_domain',
|
||||
'supports' => array( 'alignment' => true ),
|
||||
) );
|
||||
|
||||
$this->assertSame( 'Test title', $block_type->title );
|
||||
$this->assertSame( 'Test category', $block_type->category );
|
||||
$this->assertEqualSets( array( 'core/third-party' ), $block_type->parent );
|
||||
$this->assertSame( 'icon.png', $block_type->icon );
|
||||
$this->assertSame( 'test description', $block_type->description );
|
||||
$this->assertEqualSets( array( 'test keyword' ), $block_type->keywords );
|
||||
$this->assertSame( 'test_domain', $block_type->textdomain );
|
||||
$this->assertEqualSets( array( 'alignment' => true ), $block_type->supports );
|
||||
}
|
||||
|
||||
/**
|
||||
* Testing the block version.
|
||||
*
|
||||
|
Loading…
x
Reference in New Issue
Block a user