wpseek.com
A WordPress-centric search engine for devs and theme authors



insert_hooked_blocks_into_rest_response › WordPress Function

Since6.6.0
Deprecatedn/a
insert_hooked_blocks_into_rest_response ( $response, $post )
Parameters: (2)
  • (WP_REST_Response) $response The response object.
    Required: Yes
  • (WP_Post) $post Post object.
    Required: Yes
Returns:
  • (WP_REST_Response) The response object.
Defined at:
Codex:
Change Log:
  • 6.8.0

Hooks into the REST API response for the Posts endpoint and adds the first and last inner blocks.



Source

function insert_hooked_blocks_into_rest_response( $response, $post ) {
	if ( empty( $response->data['content']['raw'] ) ) {
		return $response;
	}

	$attributes            = array();
	$ignored_hooked_blocks = get_post_meta( $post->ID, '_wp_ignored_hooked_blocks', true );
	if ( ! empty( $ignored_hooked_blocks ) ) {
		$ignored_hooked_blocks  = json_decode( $ignored_hooked_blocks, true );
		$attributes['metadata'] = array(
			'ignoredHookedBlocks' => $ignored_hooked_blocks,
		);
	}

	if ( 'wp_navigation' === $post->post_type ) {
		$wrapper_block_type = 'core/navigation';
	} elseif ( 'wp_block' === $post->post_type ) {
		$wrapper_block_type = 'core/block';
	} else {
		$wrapper_block_type = 'core/post-content';
	}

	$content = get_comment_delimited_block_content(
		$wrapper_block_type,
		$attributes,
		$response->data['content']['raw']
	);

	$content = apply_block_hooks_to_content(
		$content,
		$post,
		'insert_hooked_blocks_and_set_ignored_hooked_blocks_metadata'
	);

	// Remove mock block wrapper.
	$content = remove_serialized_parent_block( $content );

	$response->data['content']['raw'] = $content;

	// 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' );
	if ( false !== $priority ) {
		remove_filter( 'the_content', 'apply_block_hooks_to_content', $priority );
	}

	/** This filter is documented in wp-includes/post-template.php */
	$response->data['content']['rendered'] = apply_filters( 'the_content', $content );

	// Restore the filter if it was set initially.
	if ( false !== $priority ) {
		add_filter( 'the_content', 'apply_block_hooks_to_content', $priority );
	}

	return $response;
}