insert_hooked_blocks_into_rest_response()WP 6.6.0

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() 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;
}