cocoonフック調査~cocoon_theme_block_categoriesの使い方と活用例

タナビーの高梨です。
WordPressのテーマ「Cocoon」には、テーマ改変なしでデザインや動作を拡張できる豊富なアクション・フィルターフックが用意されています。
分かる範囲で内容を調査したのでブログにまとめていこうと思います。
今回はブロックエディタでブロック選択する際のブロックカテゴリー名を変更できる
cocoon_theme_block_categories
です。
フックの概要
フック名 | 発火タイミング |
---|---|
cocoon_theme_block_categories | ブロックエディタが起動されるタイミング |
フックの発火条件
このフックは、ブロックエディタを起動したタイミングで無条件に1回発火します。
使いどころ
Gutenbergでブロックを追加する際、Cocoonでは独自のカテゴリーがいくつか定義されています。
デフォルトでは以下のような分類です:
・cocoonブロック
・cocoon汎用ブロック
・cocoonマイクロコピー
・cocoonレイアウト
cocoon_theme_block_categories フィルターを使えば、これらのカテゴリー名(表示タイトル)を自由に変更できます。
例:
cocoonブロック
→ コクーンブロック
実際の編集画面では、カテゴリー名が次のように置き換わります:


……で、何が嬉しいのか?
正直、「カテゴリー名を変えたからって何が変わるの?」という気がしないでもないです。
ただ、「cocoonブロック」→「コクーンブロック」のように、
より分かりやすくしたい、チームや案件に合わせて名称をローカライズしたい、といった需要はあるかもしれません。
apply_filters呼び出し元のソースコード
blocks/src/init.php
$block_categories = apply_filters(
'cocoon_theme_block_categories',
$block_categories
);
引数
$block_categories:(array)ブロックカテゴリー情報
カスタマイズコード例
上記「cocoonブロック」を「コクーンブロック」に変更する例です。
function customize_theme_block_categories( $block_categories ) {
foreach ( $block_categories as &$block_category ) {
if( $block_category['slug'] == 'cocoon-block') {
$block_category['title'] = 'コクーンブロック';
}
}
return $block_categories;
}
add_filter( 'cocoon_theme_block_categories', 'customize_theme_block_categories' );
cocoon関連のslugとtitleは以下の通りとなっているようです。
slug | title |
---|---|
cocoon-block | コクーンブロック |
cocoon-universal-block | Cocoon汎用ブロック |
cocoon-micro | Cocoonマイクロコピー |
cocoon-layout | Cocoonレイアウト |
cocoon-shortcode | Cocoonショートコード |
cocoon-old | Cocoon旧ブロック(非推奨) |
補足:
cocoon-shortcode
と cocoon-old
は、ブロックエディタ上では表示されないため、過去の名残りか、別用途(例:ツールバーのショートコードボタン)として存在している可能性があります。
注意点
・slugは変えられない
表示タイトルは変更できますが、slug自体は変わりません。たとえば「cocoon-block」は内部的にはそのままなので、他のコードとの整合性に注意が必要です。
・titleは重複させない方が無難
同じ名前のカテゴリーが複数あると、編集画面で混乱を招く可能性があります。
・配列の構造を壊さないように注意
$block_category は[‘slug’]と[‘title’]を含む連想配列です。foreachで上書きするときは意図せぬ破壊に注意してください。
まとめ
cocoon_theme_block_categoriesは、ブロックエディタでのCocoonブロックカテゴリー名を自由に変えられるフィルターです。
使いどころはやや限定的ですが、こだわりたい人にとっては地味に嬉しい機能かもしれません。