register_block_script_module_id

The timeline below displays how wordpress function register_block_script_module_id has changed across different WordPress versions. If a version is not listed, refer to the next available version below.

WordPress Version: 6.5

/**
 * Finds a script module ID for the selected block metadata field. It detects
 * when a path to file was provided and optionally finds a corresponding asset
 * file with details necessary to register the script module under with an
 * automatically generated module ID. It returns unprocessed script module
 * ID otherwise.
 *
 * @since 6.5.0
 *
 * @param array  $metadata   Block metadata.
 * @param string $field_name Field name to pick from metadata.
 * @param int    $index      Optional. Index of the script module ID to register when multiple
 *                           items passed. Default 0.
 * @return string|false Script module ID or false on failure.
 */
function register_block_script_module_id($metadata, $field_name, $index = 0)
{
    if (empty($metadata[$field_name])) {
        return false;
    }
    $module_id = $metadata[$field_name];
    if (is_array($module_id)) {
        if (empty($module_id[$index])) {
            return false;
        }
        $module_id = $module_id[$index];
    }
    $module_path = remove_block_asset_path_prefix($module_id);
    if ($module_id === $module_path) {
        return $module_id;
    }
    $path = dirname($metadata['file']);
    $module_asset_raw_path = $path . '/' . substr_replace($module_path, '.asset.php', -strlen('.js'));
    $module_id = generate_block_asset_handle($metadata['name'], $field_name, $index);
    $module_asset_path = wp_normalize_path(realpath($module_asset_raw_path));
    $module_path_norm = wp_normalize_path(realpath($path . '/' . $module_path));
    $module_uri = get_block_asset_url($module_path_norm);
    $module_asset = (!empty($module_asset_path)) ? require $module_asset_path : array();
    $module_dependencies = isset($module_asset['dependencies']) ? $module_asset['dependencies'] : array();
    $block_version = isset($metadata['version']) ? $metadata['version'] : false;
    $module_version = isset($module_asset['version']) ? $module_asset['version'] : $block_version;
    wp_register_script_module($module_id, $module_uri, $module_dependencies, $module_version);
    return $module_id;
}