ここでは、ブロック プラグインが WordPress フック、具体的には WordPress 6.4 で導入された新しいブロック フック機能を使用する方法の概要を示します。
1. ブロックフックの原則:
- 自動配置: 別のブロックがコンテンツに追加されると、ブロックは自動的に配置されるため、手動で挿入する必要がなくなります。
- 可視性と制御: 挿入されたブロックはエディターに表示され、ユーザーはその自動挿入を制御できるため、カスタマイズされた編集エクスペリエンスが可能になります。
2. 制限事項と考慮事項:
- ブロック フックは、変更されていないテンプレート、テンプレート パーツ、テーマによって提供されるパターンでのみ機能します。これらは、投稿コンテンツ、変更されたテンプレート/パーツ、またはユーザーが生成したパターンでは機能しません。
- WordPress 6.4 の時点では、ブロック検証エラーが発生する可能性があるため、カスタム保存機能を持つブロックでは自動挿入は機能しません。開発者は互換性を確保するためにダイナミック ブロックを使用する必要があります。
3. ブロックをフックする 2 つの方法:
a. 「block.json」の使用:
- サードパーティのブロックをフックする簡単な方法を提供しますが、柔軟性は限られています。
- `block.json` の `blockHooks` プロパティを使用すると、フックされたブロックの位置 (前、後、最初の子、最後の子) を指定できます。
b. 「hooked_block_types」フィルターの使用:
- 「block.json」と比較して柔軟性が高く、テンプレート、テンプレート パーツ、またはパターンに基づいた条件付きフックが可能です。
- `hooked_block_types` のコールバック関数は、フックされたブロック、位置、アンカー ブロック、コンテキストなどのパラメーターを受け取ります。
4. 開発者向けの考慮事項:
- フックされたブロックがサイト エディターに表示され、ユーザーがその配置を制御できるようになります。ユーザーがブロックを移動したい場合、開発者はブロックの位置を強制することはできません。
- 静的ブロック (カスタム保存関数を使用) をフックすることは、ブロック検証エラーが発生する可能性があるため推奨されません。ブロック フックにはダイナミック ブロックが推奨されます。
- 開発者は、フックされたブロックが現在の WordPress バージョンおよびそのブロックフック API と互換性があることを確認する必要があります。
要約すると、WordPress 6.4 以降の新しいブロック フック機能は、ユーザーがサイト エディター内でブロックの配置を制御できるようにしながら、ブロック プラグインが特定の場所にブロックを自動的に挿入する強力な方法を提供します。
引用:[1] https://github.com/WordPress/gutenberg/issues/54904
[2] https://kinsta.com/blog/wordpress-hooks/
[3] https://essential-blocks.com/block-hooks-everything-you-need-to-know/
[4] https://www.youtube.com/watch?v=ezPHiyhhaoQ
[5] https://developer.wordpress.org/block-editor/reference-guides/packages/packages-hooks/