parse_blocks( string $content ): array[]
Parses blocks out of a content string.
Contents
Parameters
-
$content
string Required -
Post content.
Return
array[] Array of parsed block objects.
Source
File: wp-includes/blocks.php
.
View all references
function parse_blocks( $content ) {
/**
* Filter to allow plugins to replace the server-side block parser.
*
* @since 5.0.0
*
* @param string $parser_class Name of block parser class.
*/
$parser_class = apply_filters( 'block_parser_class', 'WP_Block_Parser' );
$parser = new $parser_class();
return $parser->parse( $content );
}
Hooks
-
apply_filters( 'block_parser_class',
string $parser_class ) -
Filter to allow plugins to replace the server-side block parser.
Changelog
Version | Description |
---|---|
5.0.0 | Introduced. |
User Contributed Notes
You must log in before being able to contribute a note or feedback.
Example using
parse_blocks()
to display a block from a postPlace within The Loop
If used in The Loop it renders the first YouTube video embedded within a post. Can be used with other blocks by assigning their blockName.
Top ↑
Feedback
This embed example is now defunct as of WordPress 5.6 changing to the block name to core/embed and adding variations. I’ll submit a new sample. — By Joseph Dickson —
Use serialize_blocks() to convert the parsed block back to content.
Example of returned array for a Paragraph block:
As of Gutenberg 7.7, for this input:
the output of
parse_blocks
will be:In case you wish to check if current post content is Gutenberg-blocks or using Classic editor:
If post content is Classic Editor, it has only one block, but
blockName
is empty.Top ↑
Feedback
There is a better way for this. Function has_blocks(). — By Lovro Hrust —
Currently, a much less costly method would use the has_blocks() function, which accepts either the unparsed post content or a wp_post object.
$fullContent = get_the_content( $pid ); if ( has_blocks( $fullContent ) ) { doit(); }
orif ( has_blocks( $post ) ) { doit(); }
— By Brian Layman —