-
Notifications
You must be signed in to change notification settings - Fork 4.2k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Plugin: Move
wp_enqueue_block_view_script
to experiments (#44414)
- Loading branch information
Showing
2 changed files
with
79 additions
and
73 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,79 @@ | ||
<?php | ||
/** | ||
* Temporary compatibility shims for block APIs present in Gutenberg. | ||
* | ||
* @package gutenberg | ||
*/ | ||
|
||
if ( ! function_exists( 'wp_enqueue_block_view_script' ) ) { | ||
/** | ||
* Enqueues a frontend script for a specific block. | ||
* | ||
* Scripts enqueued using this function will only get printed | ||
* when the block gets rendered on the frontend. | ||
* | ||
* @since 6.2.0 | ||
* | ||
* @param string $block_name The block name, including namespace. | ||
* @param array $args An array of arguments [handle,src,deps,ver,media,textdomain]. | ||
* | ||
* @return void | ||
*/ | ||
function wp_enqueue_block_view_script( $block_name, $args ) { | ||
$args = wp_parse_args( | ||
$args, | ||
array( | ||
'handle' => '', | ||
'src' => '', | ||
'deps' => array(), | ||
'ver' => false, | ||
'in_footer' => false, | ||
|
||
// Additional args to allow translations for the script's textdomain. | ||
'textdomain' => '', | ||
) | ||
); | ||
|
||
/** | ||
* Callback function to register and enqueue scripts. | ||
* | ||
* @param string $content When the callback is used for the render_block filter, | ||
* the content needs to be returned so the function parameter | ||
* is to ensure the content exists. | ||
* @return string Block content. | ||
*/ | ||
$callback = static function( $content, $block ) use ( $args, $block_name ) { | ||
|
||
// Sanity check. | ||
if ( empty( $block['blockName'] ) || $block_name !== $block['blockName'] ) { | ||
return $content; | ||
} | ||
|
||
// Register the stylesheet. | ||
if ( ! empty( $args['src'] ) ) { | ||
wp_register_script( $args['handle'], $args['src'], $args['deps'], $args['ver'], $args['in_footer'] ); | ||
} | ||
|
||
// Enqueue the stylesheet. | ||
wp_enqueue_script( $args['handle'] ); | ||
|
||
// If a textdomain is defined, use it to set the script translations. | ||
if ( ! empty( $args['textdomain'] ) && in_array( 'wp-i18n', $args['deps'], true ) ) { | ||
wp_set_script_translations( $args['handle'], $args['textdomain'], $args['domainpath'] ); | ||
} | ||
|
||
return $content; | ||
}; | ||
|
||
/* | ||
* The filter's callback here is an anonymous function because | ||
* using a named function in this case is not possible. | ||
* | ||
* The function cannot be unhooked, however, users are still able | ||
* to dequeue the script registered/enqueued by the callback | ||
* which is why in this case, using an anonymous function | ||
* was deemed acceptable. | ||
*/ | ||
add_filter( 'render_block', $callback, 10, 2 ); | ||
} | ||
} |