WordPress Version: 6.3
/**
* 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. For strict accuracy,
* you should use the block parser on post content.
*
* @since 5.0.0
*
* @see parse_blocks()
*
* @param int|string|WP_Post|null $post Optional. Post content, post ID, or post object.
* Defaults to global $post.
* @return bool Whether the post has blocks.
*/
function has_blocks($post = null)
{
if (!is_string($post)) {
$wp_post = get_post($post);
if (!$wp_post instanceof WP_Post) {
return false;
}
$post = $wp_post->post_content;
}
return str_contains((string) $post, '<!-- wp:');
}