WordPressのカスタム投稿タイプで脚注ブロックが使用できない原因と対処法

2024.11.22
WordPressのカスタム投稿タイプで脚注ブロックが使用できない原因と対処法

WordPressのバージョン6.3から、ブロックエディタに脚注ブロック が追加されました。

このブロックはデフォルトの投稿タイプでは使用できるのですが、カスタム投稿タイプではエディタに表示されないという現象が起こる場合があります。

デフォルトの投稿タイプ

WordPress標準の投稿(post)のブロックエディタでは、[脚注]を選択できる。

カスタム投稿タイプ

カスタム投稿タイプのブロックエディタでは、[脚注]が表示されない。

今回の記事では、カスタム投稿タイプのブロックエディタでも脚注ブロックを使用する方法を解説します。

もし同じような現象にお困りの方がいましたら、ぜひ参考にしてみてください。

目次

WordPressのバージョン・開発環境

当記事で紹介する方法は、以下のバージョンで動作確認を行っています。

それぞれ執筆時(2024年11月)の最新バージョンです。

執筆時点のバージョン情報
"WordPress":"6.7"
"Secure Custom Fields":"6.3.10.2"
"Advanced Custom Fields PRO":"6.3.11"
"Custom Post Type UI":"1.17.2"

また、カスタム投稿タイプを作成する方法はいくつかありますが、当記事では以下の4つのパターンで作成する場合について解説します。

上記以外の方法でカスタム投稿タイプを作成している場合も、基本的な考え方は同じなので問題ありません。

カスタム投稿タイプで脚注ブロックが使用できない原因

原因を特定するには、脚注ブロックのファイルを確認する必要があります。

footnotes.phpの記述を確認する

脚注ブロックのファイルは、wp-includes/blocks/footnotes.phpにあります。

コードの中身の一部を抜粋すると以下のようになっています。

PHP
/**
 * Registers the footnotes meta field required for footnotes to work.
 *
 * @since 6.5.0
 */
function register_block_core_footnotes_post_meta() {
  $post_types = get_post_types( array( 'show_in_rest' => true ) );
  foreach ( $post_types as $post_type ) {
    // Only register the meta field if the post type supports the editor, custom fields, and revisions.
    if (
      post_type_supports( $post_type, 'editor' ) &&
      post_type_supports( $post_type, 'custom-fields' ) &&
      post_type_supports( $post_type, 'revisions' )
    ) {
      register_post_meta(
      $post_type,
      'footnotes',
      array(
        'show_in_rest'      => true,
        'single'            => true,
        'type'              => 'string',
        'revisions_enabled' => true,
        )
      );
    }
  }
}

この抜粋したコードの中で、以下の部分に注目してみます。

PHP
// Only register the meta field if the post type supports the editor, custom fields, and revisions.
if (
  post_type_supports( $post_type, 'editor' ) &&
  post_type_supports( $post_type, 'custom-fields' ) &&
  post_type_supports( $post_type, 'revisions' )
)

このコードのif文の上に、

Only register the meta field if the post type supports the editor, custom fields, and revisions.

というコメントがありますね。

これを訳すと、投稿タイプがエディタ、カスタムフィールド、リビジョンをサポートしている場合にのみメタフィールドを登録するという意味になります。

つまり、これらの条件を満たしていないと、脚注ブロックが使用できないということですね。

カスタム投稿タイプで脚注ブロックを使用可能にする方法

ここからは、カスタム投稿タイプで脚注ブロックを使えるようにする実際の方法を紹介します。

まず要点をまとめると、以下の2つの設定が必要となります。

  • 投稿タイプでeditor, revisions, custom-fieldsを有効化する
  • show_in_resttrueにして、ブロックエディタを有効化する

これらの設定はカスタム投稿タイプを作成する方法によって異なりますので、次で4つのパターンに分けて解説します。

1. functions.phpでカスタム投稿タイプを作成している場合

まずはプラグインを使わずに、functions.phpでカスタム投稿タイプを作成している場合です。

カスタム投稿タイプを作成するコードは、以下のようになっているかと思います。

functions.php
PHP
<?php
 
function register_custom_post_type() {
 
  register_post_type(
    'news',
    array(
      'label' => 'お知らせ',
      'public' => true,
      'has_archive' => true,
      'menu_position' => 5,
      'supports' => array(
        'title',
        'thumbnail',
        'editor',
        'revisions',
        'custom-fields'
      ),
      'show_in_rest' => true,
    )
  );
}
 
add_action('init', 'register_custom_post_type');

このコードの中で、supportseditor, revisions, custom-fieldsを追加し、show_in_resttrueに設定することで、脚注ブロックを使用できるようになります。

自身のコードと照らし合わせて、もし抜けている場合は上記のコードを参考に追加してみてください。

2. Secure Custom Fieldsでカスタム投稿タイプを作成している場合

続いては、Secure Custom Fields(旧Advanced Custom Fields)を使用してカスタム投稿タイプを作成している場合です。

まずは投稿タイプの編集画面を開きます。

SCFで作成したカスタム投稿タイプ

下にスクロールし、[高度な設定]を開くと、デフォルトでは以下のようになっているかと思います。

SCFの高度な設定の画面

ここで、もし「エディタ」「カスタムフィールド」「リビジョン」にチェックが入っていない場合は、チェックを入れてください。

デフォルトでは「リビジョン」にのみチェックが入っていないので、これにチェックを入れるだけでOKです。

また、ブロックエディタを有効化するために、[REST API]のタブを開き、「REST APIで表示」が有効になっているかも確認してください。

SCFのREST APIの設定画面

これらの設定を行うことで、脚注ブロックが使用できるようになっているはずです。

3. Advanced Custom Fields PROでカスタム投稿タイプを作成している場合

こちらは上で説明したSecure Custom Fieldsと全く同じ手順で設定できるので、上の手順を参考に設定してください。

4. Custom Post Type UIでカスタム投稿タイプを作成している場合

最後に、Custom Post Type UIを使用してカスタム投稿タイプを作成している場合です。

まずはCustom Post Type UIの設定画面を開き、「投稿タイプを編集」でカスタム投稿タイプを選択します。

CPTUIの投稿タイプを編集画面

下にスクロールすると「サポート」の設定が出てくるので、「エディター」「カスタムフィールド」「リビジョン」にチェックを入れて下さい。

投稿タイプのサポート設定画面

また、ブロックエディタを有効化するために、「REST APIで表示」がTrueになっているかも確認してください。

REST APIで表示の設定画面

以上で設定は完了です!

これでブロックエディタ内に脚注ブロックが表示されるはずです。

まとめ:カスタム投稿タイプで脚注ブロックが使用できない原因と対処法

今回の記事では、WordPressのカスタム投稿タイプで脚注ブロックが使用できない原因と対処法について解説しました。

カスタム投稿タイプの作成方法はいろいろありますが、共通して必要な設定は以下の2つです。

  • 投稿タイプでeditor, revisions, custom-fieldsを有効化する
  • show_in_resttrueにして、ブロックエディタを有効化する

これらの設定を行うことで、カスタム投稿タイプでも脚注ブロックを使用できるようになります。

もし「カスタム投稿タイプのブロックエディタで脚注が表示されない」という問題に遭遇した場合は、ぜひこの記事を参考にしてみてください。

SHARE
  • Xでシェア
  • Facebookでシェア
  • LINEでシェア
  • はてなブックマークに登録
  • pocketに登録