Gutenberg での大きな変更点


「Gutenberg」と従来のエディターとの違いは何か。
取り急ぎ「Classic Editor」 プラグインの有効化が必要なのはなぜか。
現段階で分かっていることを並べてみます。

コンテンツの保存形式が変わります

「Gutenberg」では、投稿内容のデータ保存の形式が変わります。
データベース wp_posts テーブルの post_content フィールドで見比べると分かります。

各ブロックは<!-- wp:paragraph --><!-- /wp:paragraph --> といったコメントタグで囲まれます。

Gutenbergでの保存形式

この wp:paragraph の部分は、ブロックタイプによって変わります。

wp:paragraph      段落タイプ
wp:heading       見出しタイプ
wp:image {“id”:〇〇〇}  画像タイプ(〇〇〇は画像のID)
wp:html         カスタムHTMLタイプ

という具合です。
このタグを使ってブロックタイプを識別し、それぞれのブロックのメタデータを作成し保持します。

post_content フィールドの内容に、これらのタグが含まれるということは、<?php the_content(); ?>で本文を出力する場合に渡されるデータには、このコメントタグを含みます。

因みに、従来の保存形式では、これらのタグはありません。
本文のみが保存されています。

従来の保存形式

<?php the_content(); ?>という通常の出力には問題ないと思われますが、独自のフィルターなど通している場合、<!-- wp:paragraph --><!-- /wp:paragraph -->タグが本文に出力されるなど、不具合に遭遇するかもしれません。

カスタム投稿の扱い

カスタム投稿を持つサイトで、WordPress 5.0 にアップデートしたところ、カスタム投稿が表示されなくなりました。
大慌てです。

このカスタム投稿では、カスタムフィールドだけでコンテンツを作成し、
「supports」パラメーター内に「editor」を設定していません。
このことが原因だったようですね。

Gutenberg でカスタム投稿を利用する場合、
「supports」パラメーター内に「editor」の設定が必須となります。

参考URL
https://capitalp.jp/2018/08/14/fate-of-customfield-craftmans/
Capital P 「Before Gutenberg – カスタムフィールド職人の命運やいかに?」


'supports' => array( 'title', 'thumbnail', 'excerpt','editor')

また、Gutenberg でカスタム投稿を利用する場合、register_post_type() 関数の設定に、下記「show_in_rest」 パラメーターが必要になります。

'show_in_rest' => true

以上を合わせると、register_post_type() の設定は、次のようになります。

/** add custum_post_type **/
function create_post_type() {
  register_post_type( 'product',  // カスタム投稿名
    array(
      'labels' => array(
        'name' => '商品情報', // 管理画面の左メニューに表示されるテキスト
        'singular_name' => 'product'
      ), 
      'public' => true,  // 投稿タイプをパブリックにするか否か
      'has_archive' => true,  // アーカイブを有効にするか否か
      'menu_position' => 5,  // 管理画面上でどこに配置するか
      'supports' => array( 'title', 'thumbnail', 'excerpt', 'editor'),
      'show_in_rest' => true
    )
  );
}
add_action( 'init', 'create_post_type' );

今後も気づいたこと、調べてみたことなど、最新情報をお届けします。


関連記事

©Oz-style