サイトアイコン Capital P

Before Gutenberg – カスタムフィールド職人の命運やいかに?

カスタムフィールド職人の朝は早い。前回に引き続き、Gutenbergのリリースに備える連載の第2回目となる今回は、このCapital Pで生まれた名言「カスタムフィールド製造業」に忙しく従事する職人のために、Gutenberg以降どのようになるのかを指摘しておこう。

エディターのない投稿タイプは動かない

WordPressを激しくカスタマイズして利用する際、次のような設定で利用する方は多いのではないだろうか。

これにより、日付情報を持ったイベントページや、家賃・間取りなどの複雑な情報をもった不動産データベースなどを構築することができる。ビジュアルにすると次のような感じだ。

これはサンプルだが、実際の現場ではフィールドが30個ぐらいあるのが普通。

しかしながら、現時点のGutenbergでは、supportsにeditorを入れておかないと動かない。画面が真っ白になってウンともスンとも言わなくなる。

現時点ではこのようになにもできない真っ白な画面になる。ほんとうにありがとうございました。

よって、この「エディターなし投稿タイプをどうするのか」という問題は、Gutenbergが本番稼働するまでに解決しておかなければならない問題の一つだ。ちなみに、カスタム投稿タイプをGutenbergで使う場合、show_in_resttrueにしないと動かないのでご注意あれ。

そのままで動くメタボックス

さて、ACFでは「なんとなく見栄えがいい&TinyMCEが壊れない」という理由により、WordPress標準のメタボックスを使わずにフィールドを追加する方法がある。主なフックは次のとおり。

フック名 表示箇所 Gutenberg対応
edit_form_after_title タイトルの下、エディターの上 ×
edit_form_after_editor エディターの下、メタボックスの上
edit_form_advanced メタボックスの下
dbx_post_sidebar サイドバーの最後

Gutenberg以前はこれらのフックを利用することで管理画面になにかを表示することができていたのだが、edit_form_after_titleなどは動かないようだ。したがって、ACFの設定でこれらを利用していた場合、そのカスタムフィールドは表示されなくなる。

‘after_title’は動かない。seamlessも余白がなくなって少し変なので、素直にメタボックスを使おう。

もし可能であれば、素直に標準のメタボックスを使っておいた方がよいだろう。幸い、メタボックスはそのまま動作するのでご心配なく。

エディターのあとのメタボックスは普通に表示され、デイトピッカーなども動作する。やったぜ!

ACFのGutenberg対応

さて、ACFはそれなりに人気のあるプラグインなので、Gutenberg対応をすることを謳っている。最近公開された記事 “The State of ACF in a Gutenberg World” では、次のバージョン5からGutenbergにきちんと対応していくようだ。

さらに、おまけとしてカスタムブロックをカスタムフィールド経由で作れるようにするらしく、これは待望の機能となるだろう。ちなみに、Gutenbergでは各ブロックの属性値をカスタムフィールドに持たせることもできる。

ACFのブログより。このTestimonialのようなカスタムブロックをPHPだけで追加できる。no react is my life.

Javascriptについてそれほど詳しくないなんちゃってフルスタックエンジニアでもカスタムブロックを作れるようになるので、かなり喜ばれる機能になるのではないだろうか。

まとめ:有名どころは大丈夫では?

さて、ざっくり見たところ、ACFのような有名どころではGutenberg対応を行うことを表明にしているので、5.0のリリースに遅れることはあっても、必ず対応は行われるはずだ。クラシックエディターを入れて時間稼ぎをしている間に勝手に解決すると思われる。

辛いのは自作プラグインを作ったサイト、そして、更新が頻繁に行われないマイナープラグインを利用しているサイトではないだろうか。これらのサイトに関しては、調査やソースの見直しなどの作業を見込まずにGutenbergへ移行することは危険である。

 

次回以降はWebアセンブラー御用達のElementor, BeaverBuilderなどの「ページビルダー」を見てみたい。こちらはGutenbergと相互補完的に立ち回れるACFと異なり、機能が完全にバッティングしているので、どうなるのか見ものだ。

モバイルバージョンを終了