WordPress5.8でFSE系のブロックをオフ(使用不可)にする方法

WordPress5.8から、FSE(フルサイト編集)用のブロックが追加されました。

しかし、ブロックベーステーマならばともかく、従来のPHPで組むテーマでこれらのブロックを使うことはほぼないと思います。むしろ邪魔になってしまうケースがほとんどだと思います。

なので、今回はそのFSEのためのブロックを使用できないようにする方法を紹介しておきます。

(執筆段階ではまだRC版なので、5.8の本リリースでは標準でオフになっている可能性もあります。)

オフにするには、'allowed_block_types_all'というフックを使います。(旧'allowed_block_types'

add_filter( 'allowed_block_types_all', function ( $allowed_block_types, $block_editor_context ) {

	$allowed_blocks = [];
	if ( is_array( $allowed_block_types ) && ! empty( $allowed_block_types ) ) {
		// すでに許可リストがある場合
		$allowed_blocks = $allowed_block_types;
	} else {
		// まだ空だったら全ブロック取得
		$block_types = \WP_Block_Type_Registry::get_instance()->get_all_registered();
		foreach ( $block_types as $block_type ) {
			$allowed_blocks[] = $block_type->name;
		}
	}

	$FSE_blocks = [
		'core/loginout',
		'core/page-list',
		'core/post-content',
		'core/post-date',
		'core/post-excerpt',
		'core/post-featured-image',
		'core/post-terms',
		'core/post-title',
		'core/post-template',
		'core/query-loop',
		'core/query',
		'core/query-pagination',
		'core/query-pagination-next',
		'core/query-pagination-numbers',
		'core/query-pagination-previous',
		'core/query-title',
		'core/site-logo',
		'core/site-title',
		'core/site-tagline',
	];

	$disallowed_blocks = $FSE_blocks;
	// その他、オフにしたいブロックがあれば $disallowed_blocks に追加

	$allowed_blocks = array_diff( $allowed_blocks, $disallowed_blocks );
	$allowed_blocks = array_values( $allowed_blocks ); // array_valuesちゃんとしないと効かない
	return $allowed_blocks;
}, 99, 2);

ポイントは、WP_Block_Type_Registryを使って全ブロックを取得してからいらないものを削除している点です、

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!

コメント

コメントする

目次
閉じる