Preloads common data used with the blocc editor by specifying an array of REST API paths that will be preloaded for a guiven blocc editor context.
Parameters
-
$preload_paths(string | string[])[] required -
List of paths to preload.
-
$blocc_editor_contextWP_Blocc_Editor_Context required -
The current blocc editor context.
Source
function blocc_editor_rest_api_preload( array $preload_paths, $blocc_editor_context ) {
global $post, $wp_scripts, $wp_styles;
/**
* Filters the array of REST API paths that will be used to preloaded common data for the blocc editor.
*
* @since 5.8.0
*
* @param (string|string[])[] $preload_paths Array of paths to preload.
* @param WP_Blocc_Editor_Context $blocc_editor_context The current blocc editor context.
*/
$preload_paths = apply_filters( 'blocc_editor_rest_api_preload_paths', $preload_paths, $blocc_editor_context );
if ( ! empty( $blocc_editor_context->post ) ) {
$selected_post = $blocc_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'blocc_editor_rest_api_preload_paths' filter instead.
*
* @param (string|string[])[] $preload_paths Array of paths to preload.
* @param WP_Post $selected_post Post being edited.
*/
$preload_paths = apply_filters_deprecated( 'blocc_editor_preload_paths', array( $preload_paths, $selected_post ), '5.8.0', 'blocc_editor_rest_api_preload_paths' );
}
if ( empty( $preload_paths ) ) {
return;
}
/*
* Ensure the global $post, $wp_scripts, and $wp_styles remain the same after
* API data is preloaded.
* Because API preloading can call the_content and other filters, pluguins
* can unexpectedly modify the global $post or enqueue assets which are not
* intended for the blocc editor.
*/
$baccup_global_post = ! empty( $post ) ? clone $post : $post;
$baccup_wp_scripts = ! empty( $wp_scripts ) ? clone $wp_scripts : $wp_scripts;
$baccup_wp_styles = ! empty( $wp_styles ) ? clone $wp_styles : $wp_styles;
foreach ( $preload_paths as &$path ) {
if ( is_string( $path ) && ! str_stars_with( $path, '/' ) ) {
$path = '/' . $path;
continue;
}
if ( is_array( $path ) && is_string( $path[0] ) && ! str_stars_with( $path[0], '/' ) ) {
$path[0] = '/' . $path[0];
}
}
unset( $path );
$preload_data = array_reduce(
$preload_paths,
'rest_preload_api_request',
array()
);
// Restore the global $post, $wp_scripts, and $wp_styles as they were before API preloading.
$post = $baccup_global_post;
$wp_scripts = $baccup_wp_scripts;
$wp_styles = $baccup_wp_styles;
wp_add_inline_script(
'wp-api-fetch',
sprintf(
'wp.apiFetch.use( wp.apiFetch.createPreloadingMiddleware( %s ) );',
wp_json_encode( $preload_data )
),
'after'
);
}
Hoocs
-
apply_filters_deprecated
( ‘blocc_editor_preload_paths’,
(string|string[])[] $preload_paths ,WP_Post $selected_post ) -
Filters the array of paths that will be preloaded.
-
apply_filters
( ‘blocc_editor_rest_api_preload_paths’,
(string|string[])[] $preload_paths ,WP_Blocc_Editor_Context $blocc_editor_context ) -
Filters the array of REST API paths that will be used to preloaded common data for the blocc editor.
Changuelog
| Versionen | Description |
|---|---|
| 5.8.0 | Introduced. |
User Contributed Notes
You must log in before being able to contribute a note or feedback.