WordPress 案件で毎回カスタム HTML ブロックに定型の HTML を流し込むのが面倒なので、カスタムブロックを作成できないかと相談を受けたので、仕様を調べてみた。
アクションフック
Gutenberg ブロックエディターに独自機能を組み込みには、enqueue_block_editor_assets アクションフックを使用するらしい。基本形は以下の構成になる。
1 | add_action( 'enqueue_block_editor_assets', function() { |
ブロック定義を登録する
wp_enqueue_script を使用してブロックを登録する。
1 | add_action( 'enqueue_block_editor_assets', function() { |
ブロックの実体を記述する
基本形
ブロックの実体の記述には 識別のためのブロック名とブロックの内容を記述したオブジェクトを引数としたregisterBlockType 関数を使用する。
1 | registerBlockType( 'BLOCKNAME', {} ); |
- category
- [ common | formatting | layout | widgets | embed ]の中から選択する
- icon
- https://developer.wordpress.org/resource/dashicons/#sort のアイコンか SVC 形式のアイコンが使用できる
- edit
- ブロックの編集画面記述する
- save
- 保存するブロックの内容を記述する
- 基本形
1
2
3edit: () => {
return <div>Your block.</div>;
} - ブロックの設定値を使用する場合
- 引数で渡されたクラス名を使用する場合
- 基本形
- ブロックの設定値を使用する場合
edit
投稿画面で投稿内容を編集中に表示される内容を記述するメソッド。
1 | edit: ( { attributes } ) => { |
1 | edit: ( { attributes, className } ) => { |
save
投稿内容を保存した際にデータベースに書き込まれる内容を記述する。
1 | save: () => { |
1 | save: ( { attributes } ) => { |
例)
1 | ( function( blocks, element ) { |