block_editor_rest_api_preload()
最后更新于:2021-11-25 19:54:43
block_editor_rest_api_preload( array$preload_paths, GC_Block_Editor_Context$block_editor_context)Preloads common data used with the block editor by specifying an array of REST API paths that will be preloaded for a given block editor context.
参数
- $preload_paths
-
(array) (Required) List of paths to preload.
- $block_editor_context
-
(GC_Block_Editor_Context) (Required) The current block editor context.
响应
(void)
源文件
文件: gc-includes/block-editor.php
function block_editor_rest_api_preload( array $preload_paths, $block_editor_context ) {
global $post;
/**
* Filters the array of REST API paths that will be used to preloaded common data for the block editor.
*
* @since 5.8.0
*
* @param string[] $preload_paths Array of paths to preload.
*/
$preload_paths = apply_filters( 'block_editor_rest_api_preload_paths', $preload_paths, $block_editor_context );
if ( ! empty( $block_editor_context->post ) ) {
$selected_post = $block_editor_context->post;
/**
* Filters the array of paths that will be preloaded.
*
* Preload common data by specifying an array of REST API paths that will be preloaded.
*
* @since 5.0.0
* @deprecated 5.8.0 Use the {@see 'block_editor_rest_api_preload_paths'} filter instead.
*
* @param string[] $preload_paths Array of paths to preload.
* @param GC_Post $selected_post Post being edited.
*/
$preload_paths = apply_filters_deprecated( 'block_editor_preload_paths', array( $preload_paths, $selected_post ), '5.8.0', 'block_editor_rest_api_preload_paths' );
}
if ( empty( $preload_paths ) ) {
return;
}
/*
* Ensure the global $post remains the same after API data is preloaded.
* Because API preloading can call the_content and other filters, plugins
* can unexpectedly modify $post.
*/
$backup_global_post = ! empty( $post ) ? clone $post : $post;
$preload_data = array_reduce(
$preload_paths,
'rest_preload_api_request',
array()
);
// Restore the global $post as it was before API preloading.
$post = $backup_global_post;
gc_add_inline_script(
'gc-api-fetch',
sprintf(
'gc.apiFetch.use( gc.apiFetch.createPreloadingMiddleware( %s ) );',
gc_json_encode( $preload_data )
),
'after'
);
}