【WordPress】特定の投稿タイプだけでエディター機能を無効化する方法|クラシックエディタとの使い分け

【WordPress】特定の投稿タイプだけでエディター機能を無効化する方法|クラシックエディタとの使い分け WordPress

WordPressでは、投稿タイプごとに編集画面のUIや機能を柔軟にカスタマイズできます。特定のカスタム投稿タイプにおいて、Gutenbergやクラシックエディタを無効化したいケースもあるでしょう。例えば、管理画面上ではタイトルやカスタムフィールドだけを扱いたい場合などです。

この記事では、投稿タイプごとにエディター機能(投稿本文の入力欄)を無効化する方法について、functions.phpでの実装例を交えて解説します。

スポンサーリンク

特定の投稿タイプでエディターを無効化する基本方法

投稿タイプ登録時に、supportsの設定を調整することで、投稿エディターの有無を制御できます。以下はエディターを無効化する例です。

新規登録時にeditorサポートを外す
function register_custom_post_type() {
  register_post_type('my_post_type', array(
    'labels' => array(
      'name' => 'カスタム投稿',
    ),
    'public' => true,
    'has_archive' => true,
    'menu_position' => 5,
    'supports' => array('title'), // 'editor'を含めなければ本文エディターは非表示になる
  ));
}
add_action('init', 'register_custom_post_type');

'supports' => array('title')のように'editor'を除外することで、編集画面からエディター欄が削除されます。

既存の投稿タイプに対してエディターを無効化する方法

すでに登録されている投稿タイプ(例:プラグインが追加したものなど)に対して、後からエディターを無効にしたい場合は、remove_post_type_support()関数を使用します。

登録済みの投稿タイプからeditorサポートを削除
function disable_editor_for_specific_post_type() {
  remove_post_type_support('event', 'editor'); // 投稿タイプ 'event' でエディターを無効に
}
add_action('init', 'disable_editor_for_specific_post_type');

この方法で、Gutenbergやクラシックエディタに関係なく、投稿本文の入力欄そのものを非表示にできます。

「エディターを消す」と「エディターの種類を切り替える」は別物

ここまで紹介したのは投稿タイプから本文エディター自体を取り除く方法ですが、これとは別に「Gutenbergではなくクラシックエディタを使いたい(本文エディター自体は残す)」というニーズもあります。この2つは目的が異なるため、同じ投稿タイプに両方を適用しないよう注意してください。

editorサポートを外した投稿タイプにエディター切り替えを適用しても意味がない
remove_post_type_support()で’editor’サポートを削除した投稿タイプは、本文の入力欄自体がGutenberg・クラシックエディタのどちらでも表示されません。エディターの種類を切り替えたい場合(本文エディター自体は残したまま、Gutenbergかクラシックエディタかを選びたい場合)は、editorサポートを残した別の投稿タイプに対して行ってください。

投稿タイプごとにGutenbergとクラシックエディタを使い分けたい場合は、use_block_editor_for_post_typeフィルターを使います。

editorサポートを残したままエディターの種類だけ切り替える例
function disable_gutenberg_for_custom_post_type($use_block_editor, $post_type) {
  if ($post_type === 'news') {
    return false; // Gutenbergを無効に(クラシックエディターを使用)
  }
  return $use_block_editor;
}
add_filter('use_block_editor_for_post_type', 'disable_gutenberg_for_custom_post_type', 10, 2);

これにより、投稿タイプ「news」ではクラシックエディタが表示されるようになり、他の投稿タイプではGutenbergが有効になります。複数の投稿タイプへの適用方法や、Classic Editorプラグインとの関係など、エディター切り替えについてのより詳しい実装は下記の関連記事で解説しています。

投稿タイプごとにエディター(Gutenberg/クラシック)を切り替える方法

よくある質問(FAQ)

Q特定のカスタム投稿タイプでGutenbergブロックエディターを無効にするには?
Ause_block_editor_for_post_typeフィルターで対象投稿タイプの場合にfalseを返します。add_filter(‘use_block_editor_for_post_type’, function($use, $type){ return $type === ‘custom’ ? false : $use; }, 10, 2)です。この方法は本文エディター自体は残したまま、種類だけをクラシックエディタに切り替えます。
QクラシックエディターとGutenbergを投稿タイプごとに使い分けるには?
AClassic Editorプラグインを使うと管理画面から設定できます。プラグインなしではuse_block_editor_for_post_typeフィルターでtrue/falseを返すことで制御します。
Qエディターを完全に無効にして読み取り専用にするには?
Aregister_post_type()のsupports配列からeditorを除外します。すると編集画面でコンテンツエディターが非表示になります。コンテンツはカスタムフィールドやACFで管理する構成に切り替えられます。

まとめ

特定の投稿タイプだけでエディター機能を無効化することで、管理画面をよりシンプルかつ目的に合った形に整えることができます。supportsの指定やremove_post_type_support()の利用で本文エディター自体を取り除く方法と、use_block_editor_for_post_typeフィルターでエディターの種類だけを切り替える方法は目的が異なるため、用途に応じて使い分けましょう。

カスタム投稿タイプを使った構築が増える中、用途に応じて最適な編集画面を提供することは、運用者やクライアントの満足度にも直結します。