飴屋

Gutenberg/日記007

表示するブロックを絞り込む

久しぶりにGutenbergのブロックを追加する作業を担当しました。過去の作業を思い出しながら、単純なブロックを登録してプラグインを更新しました。しかし、編集画面には追加したはずのレイアウトブロックが表示されません。何か間違ったのかなとコンパイルされたJSファイルを眺めてみても、追加したブロックは存在しているようでした。

悩んだ末、テーマのfunctions.phpの中で表示するレイアウトブロックをカスタム投稿タイプに応じて出し分けている処理をみつけました。なるほど、使わないレイアウトブロックなんて、選択肢に上がるだけでも邪魔ですもんね。レイアウトブロックに何を表示するのか、出し分けを行う機構があって当然ですね。そういえば、デフォルトで備わっていたcoreブロックも今思えば随分間引かれていたなぁ、と気付きます。

add_filter('allowed_block_types', 'mabikuyo');
function mabikuyo($allowed_block_types, $post) {
	if ($post->post_type === 'posttype_a') {
		$allowed_block_types = array(
			'core/paragraph',
			'core/heading'
		);
	}
	return $allowed_block_types;
}

allowed_block_typesフィルターに関数を追加すると、その関数に引数としてレイアウトブロックの一覧と投稿情報が渡されてくるようです。レイアウトブロックの一覧に必要なものだけ詰め込んで、返り値として返せば必要なレイアウトブロックだけが編集画面に登場するという寸法ですね。↑上のコードでは投稿タイプがposttype_aのときだけレイアウトブロックを段階と見出しに限定しています。応用すれば、特定の記事でだけ現れるレイアウトなんかもできそうですね。

日記一覧