こんにちは、Ryohei(@ityryohei)です!

本記事では、WordPressのカスタム投稿でブロックエディターが有効にならない場合の対処法をご紹介しています。

WordPressにカスタム投稿を追加したんだけど、ブロックエディタが有効にならない…どうすればいいんだろう?

上記の疑問にお答えします。

では、解説していきます。

カスタム投稿でブロックエディタを使うにはshow_in_restをtrueにする必要がある

カスタム投稿でブロックエディタを有効にするには、show_in_resttrueにする必要があります。show_in_restは、カスタム投稿の WP REST APIを有効にする設定ですが、ブロックエディターを使用する場合は有効にしておく必要がある設定項目です。

参考:関数リファレンス/register post type

カスタム投稿の追加に良く使用されるプラグインのCPT UIでは、下記の項目名で表示されています。

REST API で表示デフォルト:真

CPT UIでは、show_in_restはデフォルトで有効になっているのでデフォルトのままご使用いただければと思います。

show_in_restの設定例

WordPressにお知らせの投稿タイプを追加します。CPT UIのコードをほとんどそのまま流用していますので、必要な行だけコピーしてご利用ください。

function register_my_cpts() {

	$labels = [
		"name" => __( "お知らせ" ),
		"singular_name" => __( "お知らせ" ),
	];

	$args = [
		"label" => __( "お知らせ" ),
		"labels" => $labels,
		"description" => "",
		"public" => true,
		"publicly_queryable" => true,
		"show_ui" => true,
		"show_in_rest" => true,
		"rest_base" => "",
		"rest_controller_class" => "WP_REST_Posts_Controller",
		"has_archive" => true,
		"show_in_menu" => true,
		"show_in_nav_menus" => true,
		"delete_with_user" => false,
		"exclude_from_search" => false,
		"capability_type" => "post",
		"map_meta_cap" => true,
		"hierarchical" => true,
		"rewrite" => [ "slug" => "news", "with_front" => true ],
		"query_var" => true,
		"supports" => [ "title", "editor", "thumbnail", "custom-fields" ],
		"show_in_graphql" => false,
	];

	register_post_type( "news", $args );
}
add_action( 'init', 'register_my_cpts' );

もしshow_in_resttrueにしてもブロックエディタが表示されない場合は他に原因があります。Classic Editorが入っていないか、エディタに関連する設定に問題ないか、一度見直してみてください。

最後に

本記事の内容は、少し前にプラグインを使用せずにサイトを構築した際、自前のコードを使って追加したカスタム投稿でブロックエディタが有効にならなかったため、WordPressのドキュメントを参考に対応したものになります。もし自前のコードで追加したカスタム投稿でブロックエディタが使えない場合は、本記事の内容で解消されるか試してみてくださいね。

以上、WordPressのカスタム投稿でブロックエディターが有効にならない場合の対処法のご紹介でした!

この記事を書いた人

Ryohei

Webエンジニア / ブロガー

福岡のWeb制作会社に務めるWebエンジニアです。エンジニア歴は10年程で、好きな言語はPHPとJavaScriptです。本サイトは私がインプットしたWebに関する知識を整理し、共有することを目的に2015年から運営しています。Webに関するご相談があれば気軽にお問い合わせください。