WordPress 5.0以降、デフォルトの投稿エディターはブロックエディター(Gutenberg)に変更されましたが、すべての投稿タイプでGutenbergを使いたいとは限りません。カスタム投稿タイプごとに、Gutenbergとクラシックエディターを使い分けたいというケースも多いでしょう。
本記事では、投稿タイプ単位で使用するエディターを制御する方法を紹介します。
実装の概要
WordPressでは、use_block_editor_for_post_type
フィルターを使うことで、投稿タイプごとにブロックエディター(Gutenberg)を有効・無効にすることができます。
このフィルターに条件を追加することで、カスタム投稿タイプごとにクラシックエディターへ切り替えることが可能です。
投稿タイプごとにGutenbergを無効にする方法
以下のコードをfunctions.php
に追加してください。ここでは例として、news
というカスタム投稿タイプをクラシックエディターに切り替える場合です。
function disable_gutenberg_for_specific_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_specific_post_type', 10, 2);
このコードでは、投稿タイプがnews
の場合だけGutenbergを無効にし、クラシックエディターを使用するようにしています。
複数の投稿タイプで切り替えたい場合
複数の投稿タイプでクラシックエディターに切り替えたい場合は、配列で指定します。
function disable_gutenberg_for_some_post_types($use_block_editor, $post_type) {
$disabled_post_types = array('news', 'event', 'voice');
if (in_array($post_type, $disabled_post_types, true)) {
return false;
}
return $use_block_editor;
}
add_filter('use_block_editor_for_post_type', 'disable_gutenberg_for_some_post_types', 10, 2);
上記の例では、news
・event
・voice
の投稿タイプではクラシックエディターが使われ、それ以外はGutenbergが有効になります。
注意点:クラシックエディタープラグインの有無
この方法は、WordPress本体に標準で備わっているGutenberg制御のフィルターを使っているため、「Classic Editor」プラグインは必須ではありません。ただし、クラシックエディターのUIを明示的に使いたい場合は、プラグインを併用しておくと安定動作します。
カスタム投稿タイプの登録時にGutenbergを無効化する方法
カスタム投稿タイプをregister_post_type()
で登録する際に、下記の設定でもブロックエディターを無効化できます。
'show_in_rest' => false
ただしこの方法では、GutenbergだけでなくREST API連携も無効になるため、ブロックエディターのみを制御したい場合はフィルターを使う方法がおすすめです。
まとめ
カスタム投稿タイプごとにGutenbergとクラシックエディターを使い分けることで、編集画面のUXや運用の効率性を最適化できます。特に、
- シンプルな入力欄だけで済む投稿タイプ
- カスタムフィールド主体の投稿
- 既存のクラシックUIに依存しているテンプレート
といったケースではクラシックエディターが依然として有効です。柔軟に使い分けて、効率的な投稿管理を実現しましょう。