@@ 24-62 (lines=39) @@ | ||
21 | * |
|
22 | * @return WP_Block_Type|false The registered block type on success, or false on failure. |
|
23 | */ |
|
24 | function jetpack_register_block( $slug, $args = array() ) { |
|
25 | if ( 0 !== strpos( $slug, 'jetpack/' ) && ! strpos( $slug, '/' ) ) { |
|
26 | _doing_it_wrong( 'jetpack_register_block', 'Prefix the block with jetpack/ ', '7.1.0' ); |
|
27 | $slug = 'jetpack/' . $slug; |
|
28 | } |
|
29 | ||
30 | if ( isset( $args['version_requirements'] ) |
|
31 | && ! Jetpack_Gutenberg::is_gutenberg_version_available( $args['version_requirements'], $slug ) ) { |
|
32 | return false; |
|
33 | } |
|
34 | ||
35 | // Checking whether block is registered to ensure it isn't registered twice. |
|
36 | if ( Jetpack_Gutenberg::is_registered( $slug ) ) { |
|
37 | return false; |
|
38 | } |
|
39 | ||
40 | $feature_name = Jetpack_Gutenberg::remove_extension_prefix( $slug ); |
|
41 | // If the block is dynamic, and a Jetpack block, wrap the render_callback to check availability. |
|
42 | if ( |
|
43 | isset( $args['plan_check'] ) |
|
44 | && true === $args['plan_check'] |
|
45 | ) { |
|
46 | if ( isset( $args['render_callback'] ) ) { |
|
47 | $args['render_callback'] = Jetpack_Gutenberg::get_render_callback_with_availability_check( $feature_name, $args['render_callback'] ); |
|
48 | } |
|
49 | $method_name = 'set_availability_for_plan'; |
|
50 | } else { |
|
51 | $method_name = 'set_extension_available'; |
|
52 | } |
|
53 | ||
54 | add_action( |
|
55 | 'jetpack_register_gutenberg_extensions', |
|
56 | function() use ( $feature_name, $method_name ) { |
|
57 | call_user_func( array( 'Jetpack_Gutenberg', $method_name ), $feature_name ); |
|
58 | } |
|
59 | ); |
|
60 | ||
61 | return register_block_type( $slug, $args ); |
|
62 | } |
|
63 | ||
64 | /** |
|
65 | * Helper function to register a Jetpack Gutenberg plugin |
@@ 40-83 (lines=44) @@ | ||
37 | * |
|
38 | * @return WP_Block_Type|false The registered block type on success, or false on failure. |
|
39 | */ |
|
40 | public static function jetpack_register_block( $slug, $args = array() ) { |
|
41 | if ( 0 !== strpos( $slug, 'jetpack/' ) && ! strpos( $slug, '/' ) ) { |
|
42 | _doing_it_wrong( 'jetpack_register_block', 'Prefix the block with jetpack/ ', 'Jetpack 9.0.0' ); |
|
43 | $slug = 'jetpack/' . $slug; |
|
44 | } |
|
45 | ||
46 | if ( |
|
47 | isset( $args['version_requirements'] ) |
|
48 | && ! self::is_gutenberg_version_available( $args['version_requirements'], $slug ) |
|
49 | ) { |
|
50 | return false; |
|
51 | } |
|
52 | ||
53 | // Checking whether block is registered to ensure it isn't registered twice. |
|
54 | if ( self::is_registered( $slug ) ) { |
|
55 | return false; |
|
56 | } |
|
57 | ||
58 | $feature_name = self::remove_extension_prefix( $slug ); |
|
59 | ||
60 | // This is only useful in Jetpack. |
|
61 | if ( class_exists( Jetpack_Gutenberg::class ) ) { |
|
62 | // If the block is dynamic, and a Jetpack block, wrap the render_callback to check availability. |
|
63 | if ( |
|
64 | isset( $args['plan_check'] ) |
|
65 | && true === $args['plan_check'] |
|
66 | ) { |
|
67 | if ( isset( $args['render_callback'] ) ) { |
|
68 | $args['render_callback'] = Jetpack_Gutenberg::get_render_callback_with_availability_check( $feature_name, $args['render_callback'] ); |
|
69 | } |
|
70 | $method_name = 'set_availability_for_plan'; |
|
71 | } else { |
|
72 | $method_name = 'set_extension_available'; |
|
73 | } |
|
74 | ||
75 | add_action( |
|
76 | 'jetpack_register_gutenberg_extensions', |
|
77 | function() use ( $feature_name, $method_name ) { |
|
78 | call_user_func( array( 'Jetpack_Gutenberg', $method_name ), $feature_name ); |
|
79 | } |
|
80 | ); |
|
81 | } |
|
82 | return register_block_type( $slug, $args ); |
|
83 | } |
|
84 | ||
85 | /** |
|
86 | * Check if an extension/block is already registered |