Using WordPress ‘parse_blocks()’ PHP function

The parse_blocks() WordPress PHP function parses blocks out of a content string.

Usage

$blocks = parse_blocks($content);

Parameters

  • $content (string) – Required. The post content to parse.

More information

See WordPress Developer Resources: parse_blocks()

Examples

Display First YouTube Block in a Post

This example shows how to display the first YouTube block found in a post.

function display_first_youtube_block() {
    global $post;
    $blocks = parse_blocks($post->post_content);

    foreach ($blocks as $block) {
        if ('core-embed/youtube' === $block['blockName']) {
            echo apply_filters('the_content', render_block($block));
            break;
        }
    }
}

Check if Post has a Specific Block

This example checks if a post has a specific block, such as the core/paragraph block.

function has_specific_block($block_name) {
    global $post;
    $blocks = parse_blocks($post->post_content);

    foreach ($blocks as $block) {
        if ($block_name === $block['blockName']) {
            return true;
        }
    }
    return false;
}

Count the Number of Blocks in a Post

This example counts the number of blocks in a post.

function count_blocks() {
    global $post;
    $blocks = parse_blocks($post->post_content);

    return count($blocks);
}

Get the First Block of a Specific Type

This example retrieves the first block of a specific type, like the core/image block.

function get_first_block_of_type($block_name) {
    global $post;
    $blocks = parse_blocks($post->post_content);

    foreach ($blocks as $block) {
        if ($block_name === $block['blockName']) {
            return $block;
        }
    }
    return null;
}

Extract All Blocks of a Specific Type

This example extracts all blocks of a specific type, like the core/quote block.

function get_all_blocks_of_type($block_name) {
    global $post;
    $blocks = parse_blocks($post->post_content);
    $filtered_blocks = array();

    foreach ($blocks as $block) {
        if ($block_name === $block['blockName']) {
            $filtered_blocks[] = $block;
        }
    }
    return $filtered_blocks;
}