insert_hooked_blocks_into_rest_response()
Hooks into the REST API response for the Posts endpoint and adds the first and last inner blocks.
Хуки из функции
Возвращает
WP_REST_Response. The response object.
Использование
insert_hooked_blocks_into_rest_response( $response, $post );
- $response(WP_REST_Response) (обязательный)
- The response object.
- $post(WP_Post) (обязательный)
- Post object.
Список изменений
| С версии 6.6.0 | Введена. |
| С версии 6.8.0 | Support non-wp_navigation post types. |
| С версии 7.0.0 | Set _wp_ignored_hooked_blocks meta in the response for blocks hooked at the root level. |
Код insert_hooked_blocks_into_rest_response() insert hooked blocks into rest response WP 7.0
function insert_hooked_blocks_into_rest_response( $response, $post ) {
if ( empty( $response->data['content']['raw'] ) ) {
return $response;
}
$ignored_hooked_blocks_at_root = array();
$response->data['content']['raw'] = apply_block_hooks_to_content_from_post_object(
$response->data['content']['raw'],
$post,
'insert_hooked_blocks_and_set_ignored_hooked_blocks_metadata',
$ignored_hooked_blocks_at_root
);
if ( ! empty( $ignored_hooked_blocks_at_root ) ) {
$response->data['meta']['_wp_ignored_hooked_blocks'] = wp_json_encode( $ignored_hooked_blocks_at_root );
}
// If the rendered content was previously empty, we leave it like that.
if ( empty( $response->data['content']['rendered'] ) ) {
return $response;
}
// `apply_block_hooks_to_content` is called above. Ensure it is not called again as a filter.
$priority = has_filter( 'the_content', 'apply_block_hooks_to_content_from_post_object' );
if ( false !== $priority ) {
remove_filter( 'the_content', 'apply_block_hooks_to_content_from_post_object', $priority );
}
/** This filter is documented in wp-includes/post-template.php */
$response->data['content']['rendered'] = apply_filters(
'the_content',
$response->data['content']['raw']
);
// Restore the filter if it was set initially.
if ( false !== $priority ) {
add_filter( 'the_content', 'apply_block_hooks_to_content_from_post_object', $priority );
}
return $response;
}