register_block_script_handle
函数
register_block_script_handle ( $metadata, $field_name, $index = 0 )
- 参数
-
-
(array)
$metadata
Block metadata.- Required: 是
-
(string)
$field_name
Field name to pick from metadata.- Required: 是
-
(int)
$index
Optional. Index of the script to register when multiple items passed. Default 0.- Required: 否
-
(array)
- 返回值
-
- (string|false) Script handle provided directly or created through script’s registration, or false on failure.
- 定义位置
-
-
wp-includes/blocks.php
, line 92
-
wp-includes/blocks.php
- 引入
- 5.5.0
- 弃用
- –
Finds a script handle for the selected block metadata field. It detects
when a path to file was provided and finds a corresponding asset file
with details necessary to register the script under automatically
generated handle name. It returns unprocessed script handle otherwise.
function register_block_script_handle( $metadata, $field_name, $index = 0 ) {
if ( empty( $metadata[ $field_name ] ) ) {
return false;
}
$script_handle = $metadata[ $field_name ];
if ( is_array( $script_handle ) ) {
if ( empty( $script_handle[ $index ] ) ) {
return false;
}
$script_handle = $script_handle[ $index ];
}
$script_path = remove_block_asset_path_prefix( $script_handle );
if ( $script_handle === $script_path ) {
return $script_handle;
}
$script_handle = generate_block_asset_handle( $metadata['name'], $field_name, $index );
$script_asset_path = wp_normalize_path(
realpath(
dirname( $metadata['file'] ) . '/' .
substr_replace( $script_path, '.asset.php', - strlen( '.js' ) )
)
);
if ( ! file_exists( $script_asset_path ) ) {
_doing_it_wrong(
__FUNCTION__,
sprintf(
/* translators: 1: Field name, 2: Block name. */
__( 'The asset file for the "%1$s" defined in "%2$s" block definition is missing.' ),
$field_name,
$metadata['name']
),
'5.5.0'
);
return false;
}
// Path needs to be normalized to work in Windows env.
static $wpinc_path_norm = '';
if ( ! $wpinc_path_norm ) {
$wpinc_path_norm = wp_normalize_path( realpath( ABSPATH . WPINC ) );
}
$theme_path_norm = wp_normalize_path( get_theme_file_path() );
$script_path_norm = wp_normalize_path( realpath( dirname( $metadata['file'] ) . '/' . $script_path ) );
$is_core_block = isset( $metadata['file'] ) && 0 === strpos( $metadata['file'], $wpinc_path_norm );
$is_theme_block = 0 === strpos( $script_path_norm, $theme_path_norm );
$script_uri = plugins_url( $script_path, $metadata['file'] );
if ( $is_core_block ) {
$script_uri = includes_url( str_replace( $wpinc_path_norm, '', $script_path_norm ) );
} elseif ( $is_theme_block ) {
$script_uri = get_theme_file_uri( str_replace( $theme_path_norm, '', $script_path_norm ) );
}
$script_asset = require $script_asset_path;
$script_dependencies = isset( $script_asset['dependencies'] ) ? $script_asset['dependencies'] : array();
$result = wp_register_script(
$script_handle,
$script_uri,
$script_dependencies,
isset( $script_asset['version'] ) ? $script_asset['version'] : false
);
if ( ! $result ) {
return false;
}
if ( ! empty( $metadata['textdomain'] ) && in_array( 'wp-i18n', $script_dependencies, true ) ) {
wp_set_script_translations( $script_handle, $metadata['textdomain'] );
}
return $script_handle;
}
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。


