WordPress のカスタム投稿タイプでも Gutenberg を使えるようにする方法

WordPressの次期エディター「Gutenberg」が使える状態なら、投稿や固定ページの編集画面で使うことができると思います。

この Gutenberg をカスタム投稿タイプでも使う方法があります。

Gutenberg をカスタム投稿タイプでも使う方法

Gutenberg は REST API を利用しているので、カスタム投稿タイプで REST API が使えるよう有効にする必要があります。

カスタム投稿タイプで REST API を有効にする方法

最近ではカスタム投稿タイプの作成を管理画面でささっと作成できるプラグインも人気ですが、実際にコードを書いてカスタム投稿タイプを作成している方は「register_post_type」関数を使っているはず・・・。

なので「register_post_type」のパラメーターに以下のコードを含めると、カスタム投稿タイプを REST API に対応できます。

'show_in_rest' => true

この状態でカスタム投稿タイプの投稿の編集画面を開くと、Gutenberg に対応できます。

ちなみにですが、せっかく REST API に対応したんだし「rest_base」や「rest_controller_class」のパラメーターもあわせて設定するといいかもですね。詳細は「Adding REST API Support For Custom Content Types」をご参考ください(ひとまず show_in_rest のみ設定すれば Gutenberg に対応できます)。

クラスを使ってコードを書く場合は注意しました

WordPress のフォーラムなどでは Gutenberg をカスタム投稿タイプに対応する方法は上記までの案内で解決されている場合がほとんどのようです。

ただ、これは僕の場合で起こった特殊なことかもしれませんが、クラスを使って Gutenberg に対応するコードを書いていた場合、インスタンスを作成すると、エディターは表示されるのですが Gutenberg の保存に失敗するメッセージ「更新に失敗しました(英文だと「Updating failed」)」と表示されて、自動保存や上書き保存ができませんでした。

この解決方法は、インスタンスを作成する時に、ダッシュボードまたは管理画面の表示中かどうかをチェックする「is_admin()」関数を取り除くことで解消できました。もしかして Gutenberg に詳しい方なら「そんなの当たり前じゃん」という内容かもしれませんが、今後、同じようなことでつまづいたときにメモとしてこのページを参考にしようと思っています。

もし他にも解決方法がありましたら、ぜひともご教示いただけますと幸いです。

著者:bouya Imamura