filter_block_content()


WordPressのfilter_block_content()関数は、ブロックコンテンツをフィルタリングするために使用されます。Gutenbergエディタで生成されたコンテンツに対してカスタムフィルタを適用できます。

構文

filter_block_content( string $block_content, array $block ): string;

引数の説明:

  • $block_content(string)—フィルタリングするブロックコンテンツ
  • $block(array)—ブロックの配列データ

例1: ブロックコンテンツにクラスを追加

ブロックコンテンツにカスタムクラスを追加します。

add_filter( 'render_block', function( $block_content, $block ) { return filter_block_content( $block_content . ' class="custom-class"', $block ); }, 10, 2 );

例2: 特定のブロックのみを変更

core/paragraphブロックのみを対象に変更を加えます。

add_filter( 'render_block', function( $block_content, $block ) { if ( $block['blockName'] === 'core/paragraph' ) { return filter_block_content( strtoupper( $block_content ), $block ); } return $block_content; }, 10, 2 );

例3: ブロックコンテンツの置換

ブロック内の特定の文字列を置換します。

add_filter( 'render_block', function( $block_content, $block ) { return filter_block_content( str_replace( 'old', 'new', $block_content ), $block ); }, 10, 2 );

例4: ブロックにデータ属性を追加

ブロック要素にdata属性を追加します。

add_filter( 'render_block', function( $block_content, $block ) { return filter_block_content( preg_replace( '/<div /', '<div data-custom="value" ', $block_content, 1 ), $block ); }, 10, 2 );

例5: 条件付きでブロックを削除

特定の条件でブロックを削除します。

add_filter( 'render_block', function( $block_content, $block ) { if ( isset( $block['attrs']['className'] ) && $block['attrs']['className'] === 'hide' ) { return filter_block_content( '', $block ); } return $block_content; }, 10, 2 );

例6: ブロックコンテンツの前後に要素を追加

ブロックの前後にHTML要素を追加します。

add_filter( 'render_block', function( $block_content, $block ) { return filter_block_content( '<div class="wrapper">' . $block_content . '</div>', $block ); }, 10, 2 );

例7: ブロックタイプに基づいてスタイルを変更

ブロックタイプに応じてインラインスタイルを追加します。

add_filter( 'render_block', function( $block_content, $block ) { if ( $block['blockName'] === 'core/heading' ) { return filter_block_content( preg_replace( '/<h([1-6])/', '<h$1 style="color:red;"', $block_content ), $block ); } return $block_content; }, 10, 2 );

注意点

  • この関数はフック内で使用する必要があります
  • 元のブロック構造を壊さないように注意が必要です
  • パフォーマンスに影響する可能性があるため、過度な使用は避けてください

関連機能: