wp_filter_out_block_nodes()


WordPressのwp_filter_out_block_nodes()関数は、ブロックエディタ(Gutenberg)で使用されるブロックノードをフィルタリングするために使用されます。この関数は、特定の条件に基づいてブロックノードを除外するのに役立ちます。

構文

wp_filter_out_block_nodes( array $nodes );
  • $nodes(array) — フィルタリングするブロックノードの配列。

例1: 基本的なブロックノードのフィルタリング

この例では、ブロックノードの配列をフィルタリングします。

$filtered_nodes = wp_filter_out_block_nodes( $nodes );

例2: 特定のブロックタイプを除外

特定のブロックタイプを除外するために、カスタムフィルタを適用します。

$nodes = array_filter( $nodes, function( $node ) { return $node['blockName'] !== 'core/paragraph'; } );
$filtered_nodes = wp_filter_out_block_nodes( $nodes );

例3: 空のブロックノードを削除

空のブロックノードを削除する例です。

$nodes = array_filter( $nodes, function( $node ) { return !empty( $node['innerHTML'] ); } );
$filtered_nodes = wp_filter_out_block_nodes( $nodes );

例4: カスタム属性を持つブロックを除外

特定のカスタム属性を持つブロックを除外します。

$nodes = array_filter( $nodes, function( $node ) { return !isset( $node['attrs']['customAttr'] ); } );
$filtered_nodes = wp_filter_out_block_nodes( $nodes );

例5: ブロックノードの再帰的なフィルタリング

ネストされたブロックノードを再帰的にフィルタリングします。

function filter_nodes_recursively( $nodes ) { foreach ( $nodes as &$node ) { if ( !empty( $node['innerBlocks'] ) ) { $node['innerBlocks'] = filter_nodes_recursively( $node['innerBlocks'] ); } } return wp_filter_out_block_nodes( $nodes ); }
$filtered_nodes = filter_nodes_recursively( $nodes );

例6: ブロックノードの変換

ブロックノードを別の形式に変換します。

$nodes = array_map( function( $node ) { $node['blockName'] = str_replace( 'core/', 'custom/', $node['blockName'] ); return $node; }, $nodes );
$filtered_nodes = wp_filter_out_block_nodes( $nodes );

例7: ブロックノードの並べ替え

ブロックノードを特定の条件で並べ替えます。

usort( $nodes, function( $a, $b ) { return strcmp( $a['blockName'], $b['blockName'] ); } );
$filtered_nodes = wp_filter_out_block_nodes( $nodes );

注意点

  • この関数は、ブロックエディタのコンテンツを操作する際に使用されますが、パフォーマンスに影響を与える可能性があるため、注意が必要です。
  • フィルタリング条件が複雑な場合、予期しない結果が生じる可能性があります。

関連機能: