parse_blocks()


WordPressの関数parse_blocks()は、投稿やページのコンテンツをブロック単位で解析し、構造化データとして返します。この関数は、ブロックエディタで作成されたコンテンツを操作したい場合に使用されます。

構文

parse_blocks( string $content );
  • $content (string) — ブロックとして解析する投稿やページのHTMLコンテンツ。

例 1: 投稿コンテンツをブロックに分解

以下のコードは、投稿のコンテンツをブロックに分解し、最初のブロックを取得します。

<?php
$post_content = get_post( get_the_ID() )->post_content;
$blocks = parse_blocks( $post_content );
$first_block = $blocks[0];
?>

例 2: ブロックタイプをフィルタリング

特定のブロックタイプを持つブロックだけを取得します。

<?php
$post_content = get_post( get_the_ID() )->post_content;
$blocks = parse_blocks( $post_content );
$image_blocks = array_filter( $blocks, function( $block ) {
    return $block['blockName'] === 'core/image';
});
?>

例 3: 特定の属性を取得

特定のブロックから属性を取得するコードです。

<?php
$post_content = get_post( get_the_ID() )->post_content;
$blocks = parse_blocks( $post_content );
foreach ( $blocks as $block ) {
    if ( $block['blockName'] === 'core/paragraph' ) {
        $content = $block['innerHTML'];
    }
}
?>

例 4: ブロックをカスタムHTMLとして表示

ブロックデータをカスタムHTMLに変換して出力します。

<?php
$post_content = get_post( get_the_ID() )->post_content;
$blocks = parse_blocks( $post_content );
foreach ( $blocks as $block ) {
    echo apply_filters( 'the_content', $block['innerHTML'] );
}
?>

例 5: カスタムブロック解析の拡張

カスタムブロックの解析を行い、特定の処理を実行します。

<?php
$post_content = get_post( get_the_ID() )->post_content;
$blocks = parse_blocks( $post_content );
foreach ( $blocks as $block ) {
    if ( $block['blockName'] === 'my-plugin/custom-block' ) {
        // カスタム処理
    }
}
?>

注意点

  • parse_blocks()はブロックエディタのコンテンツ専用です。クラシックエディタのコンテンツには対応していません。
  • 解析されたデータは配列形式で返されます。必要なデータ構造を確認してください。

関連機能: