The has_blocks() WordPress PHP function determines whether a post or content string has blocks. This test optimizes for performance rather than strict accuracy, detecting the pattern of a block but not validating its structure.
Usage
if (has_blocks($post)) {
// Do something
}
Parameters
$post int|string|WP_Post|null(optional) – Post content, post ID, or post object. Defaults to the global$post. Default:null.
More information
See WordPress Developer Resources: has_blocks()
Examples
Check if a Post has Blocks
This example checks if the current post has blocks and performs some action if it does.
if (has_blocks()) {
// Do something
}
Custom Block Parser
This example demonstrates how to use has_blocks() to check if the content has any blocks before using a custom block parser.
class WPDocs_Custom_Block_Parse {
function parse() {
// Do something
}
}
function wpdocs_custom_block_parser() {
return 'WPDocs_Custom_Block_Parse';
}
$post_content = get_the_content();
if (has_blocks($post_content)) {
add_filter('block_parser_class', 'wpdocs_custom_block_parser');
$response_content = parse_blocks($content);
remove_filter('block_parser_class', 'wpdocs_custom_block_parser');
}
Check if a Specific Post has Blocks
This example checks if a specific post with a given ID has blocks.
$post_id = 42;
if (has_blocks($post_id)) {
// Do something
}
Check if a Post Object has Blocks
This example checks if a WP_Post object has blocks.
$post_object = get_post(42);
if (has_blocks($post_object)) {
// Do something
}
Check if a Content String has Blocks
This example checks if a given content string has blocks.
$content_string = "Some content with <!-- wp:paragraph -->a block<!-- /wp:paragraph -->";
if (has_blocks($content_string)) {
// Do something
}