🙅♂️
Gutenberg使わないブロックを非表示にする方法3選
ブロックを非表示にする方法を調べていた時に感じたことのメモです
この記事ではコードを少し書いてブロックを隠す方法を書いていきますがノーコードでやりたい人は以下の記事を参考にどうぞ。
ブロックマネージャーで設定
一番簡単でコアの人も非表示にしたいならこれを推奨していると思う
デメリット
- ウィジェット
- サイトエディター
などではカスタム出来ない
多分これはいづれ直る(コアが直している)
多分関連↓
ユーザーごとに変更したり権限を設定することは出来ない
option値のように初期値を変えたりは出来ない(たぶん)
ブロックマネージャーソースコード該当箇所
inserterをfalseにする
- コアの非推奨ブロックもこの方法を使っている
デメリット
コピペや複製などすれば今後も使える
PHPで非表示にする
add_filter( 'allowed_block_types_all',
function ( $allowed_block_types, $block_editor_context ) {
// 許可するブロックタイプ
$allowed_block_types = array(
'core/paragraph',
'core/heading',
);
return $allowed_block_types;
},
10,
2
);
デメリット
ブロックディレクトリーの検索などに不具合がある。
unregisterでブロックの登録をやめる
そもそもブロックの登録をやめる
コード
// my-plugin.js
wp.domReady(function () {
// オフにしたいブロックを指定する
wp.blocks.unregisterBlockType('core/paragraph');
wp.blocks.unregisterBlockType( 'core/heading' );
});
デメリット
もし使用しているページがあったらブロックが表示されない
ブロックのエラーが起きる
ちなみにブロック名の確認方法はこちらの記事に詳しく書いてありますが、ブロックエディターのコンソールでwp.blocks.getBlockTypes()
と打てば出てきます。
個人的にブロックを隠したいときはinserterをfalseで良いのかなと思います
もし使いたくなったら戻せるので。
Discussion
参考になります
inserter なかなか良さそうです。allowed_block_types_all のような副作用もなさそう
PHPからinserter操作するコードを書いてみました
例えば $mytheme_options['hide_blocks']['core/avatar'] = true;
などの非表示にしたいブロックを登録しておくと投稿編集とウィジェットブロック画面で非表示にできました。設定で簡単にブロックを選択できるようにしておくと便利