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