【WordPress】Gutenberg投稿画面から特定のカスタムカテゴリーパネルを非表示にする方法

WordPress Gutenberg投稿画面から特定のカスタムタクソノミーパネルを非表示にする方法

「WordPressのブロックエディタ(Gutenberg)で投稿編集画面をカスタマイズしたい」と考える開発者は多いでしょう。
特に「特定のカテゴリー・タクソノミー・タグなどを投稿画面から非表示にしたい」というニーズは、カスタム投稿タイプや業務要件に合わせたサイト制作ではレアケースですがあります。

本記事では、「投稿編集画面から特定のカテゴリー・タクソノミー・タグパネルを非表示にする方法」をGutenberg対応で解説します。

目次

よくある課題:「meta_box_cb」が効かない?

WordPressの register_taxonomy() 関数では、以下のように meta_box_cbfalse に設定することで、メタボックスの表示を抑制できるはず…なのですが:

'meta_box_cb' => false

これはClassic Editor(旧エディタ)では有効ですが、Gutenberg(ブロックエディタ)ではほとんど効果がないようです。

なぜGutenbergでは効かないのか?

Gutenbergでは、投稿編集画面の各セクションがJavaScriptベースで非同期に描画されるため、
meta_box_cb や remove_meta_box() では、描画後のUIを制御できないことがあるのです。

そのため、力技にはなりますが、
Gutenbergでの確実な非表示は、JavaScriptでDOM操作するのが最も実用的な方法です。

解決策:JavaScriptのMutationObserverを使って非表示にする

以下のようなコードを functions.php または独自プラグインに追加することで、
Gutenbergの投稿編集画面で「タクソノミ2」というタクソノミーのパネルを確実に非表示にできます。
(下のコードの「タクソノミ2」という文字を任意の文字に変更してお使いください。)

//WordPressブロックエディタ(Gutenberg)の右側サイドバー内で、.components-panel__body-title 要素に「タクソノミ2」というテキストが含まれている場合に、その親要素 .components-panel__body を非表示にします。
add_action('admin_enqueue_scripts', function ($hook) {
	if ($hook === 'post.php' || $hook === 'post-new.php') {
		add_action('admin_footer', function () {
			echo <<<EOD
<script>
(function(){
	const observer = new MutationObserver(() => {
		document.querySelectorAll('.components-panel__body-title').forEach(title => {
			if (title.textContent.includes('タクソノミ2')) {
				const panel = title.closest('.components-panel__body');
				if (panel && !panel.dataset.hidden) {
					panel.style.display = 'none';
					panel.dataset.hidden = 'true';
				}
			}
		});
	});
	observer.observe(document.body, { childList: true, subtree: true });
})();
</script>
EOD;
		});
	}
});

ポイント

  • GutenbergのUIは動的に構築されるので、初期描画ではDOMに存在しない可能性がある
  • MutationObserver を使うことで、後から表示された要素にも対応可能
  • .components-panel__body-title に「タクソノミ2」という文字列が含まれるパネルを検出して非表示にしている

このスクリプトは title.textContent.includes('任意の文字列') を条件にしているため、
「タグ」「カスタムフィールド」など、表示させたくないGutenbergパネルにも応用できます。

以上、Gutenberg投稿編集画面の特定パネルを非表示にする方法でした。
開発業務でカスタマイズが必要な際は、ぜひ活用してみてください!

WordPress Gutenberg投稿画面から特定のカスタムタクソノミーパネルを非表示にする方法

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

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