PluginProbe
Gutenberg / 18.1.2
Gutenberg v18.1.2
23.9.1 23.9.0 23.8.0 23.7.2 23.7.1 23.7.0 23.6.1 23.6.2 23.6.0 23.5.3 23.5.2 23.5.1 23.5.0 23.4.0 23.3.2 23.3.1 23.3.0 23.2.0 23.2.1 23.2.2 23.1.1 23.1.0 23.0.1 12.6.0 7.4.0 All 402 releases
gutenberg / lib / experimental / blocks.php

blocks.php in Gutenberg 18.1.2, at lib/experimental/blocks.php

80 lines 2.3 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Temporary compatibility shims for block APIs present in Gutenberg.
4 *
5 * @package gutenberg
6 */
7
8 if ( ! function_exists( 'wp_enqueue_block_view_script' ) ) {
9 /**
10 * Enqueues a frontend script for a specific block.
11 *
12 * Scripts enqueued using this function will only get printed
13 * when the block gets rendered on the frontend.
14 *
15 * @since 6.2.0
16 *
17 * @param string $block_name The block name, including namespace.
18 * @param array $args An array of arguments [handle,src,deps,ver,media,textdomain].
19 *
20 * @return void
21 */
22 function wp_enqueue_block_view_script( $block_name, $args ) {
23 $args = wp_parse_args(
24 $args,
25 array(
26 'handle' => '',
27 'src' => '',
28 'deps' => array(),
29 'ver' => false,
30 'in_footer' => false,
31
32 // Additional args to allow translations for the script's textdomain.
33 'textdomain' => '',
34 )
35 );
36
37 /**
38 * Callback function to register and enqueue scripts.
39 *
40 * @param string $content When the callback is used for the render_block filter,
41 * the content needs to be returned so the function parameter
42 * is to ensure the content exists.
43 * @return string Block content.
44 */
45 $callback = static function ( $content, $block ) use ( $args, $block_name ) {
46
47 // Sanity check.
48 if ( empty( $block['blockName'] ) || $block_name !== $block['blockName'] ) {
49 return $content;
50 }
51
52 // Register the stylesheet.
53 if ( ! empty( $args['src'] ) ) {
54 wp_register_script( $args['handle'], $args['src'], $args['deps'], $args['ver'], $args['in_footer'] );
55 }
56
57 // Enqueue the stylesheet.
58 wp_enqueue_script( $args['handle'] );
59
60 // If a textdomain is defined, use it to set the script translations.
61 if ( ! empty( $args['textdomain'] ) && in_array( 'wp-i18n', $args['deps'], true ) ) {
62 wp_set_script_translations( $args['handle'], $args['textdomain'], $args['domainpath'] );
63 }
64
65 return $content;
66 };
67
68 /*
69 * The filter's callback here is an anonymous function because
70 * using a named function in this case is not possible.
71 *
72 * The function cannot be unhooked, however, users are still able
73 * to dequeue the script registered/enqueued by the callback
74 * which is why in this case, using an anonymous function
75 * was deemed acceptable.
76 */
77 add_filter( 'render_block', $callback, 10, 2 );
78 }
79 }
80