WordPress

Gutenbergでカスタムタクソノミーをチェックボックス表示する

Gutenbergでカスタムタクソノミーをチェックボックス表示する設定。

以下functions.php。例はrecipeというカスタム投稿にspecialsというタクソノミー。

function specials_init() {
    register_taxonomy(
    'specials',
    'recipe',
    array(
        'label' => '特集', // 管理画面のメニューに表示されるテキスト
        'labels' => array(
        'all_items' => '特集一覧', // 管理画面のメニューの下層に表示されるテキスト
        'add_new_item' => '特集を追加' // タームの新規追加画面に表示されるテキスト
        ),
        'public' => true,
        'show_ui' => true,
        'show_in_nav_menus' => true,
        'show_in_rest' => true, //Gutenbergで表示有効化
        'meta_box_cb' => 'post_categories_meta_box', //チェックボックスで表示
        'hierarchical' => true //階層化しない場合でもtrueでないとチェックボックス表示できない
    )
    );
}
add_action( 'init', 'specials_init' );

ポイントは下の3行。だいたいコメントアウトに書いた通りですが、

  1. show_in_rest …これがないとGutenbergエディターで表示されない
  2. meta_box_cb …これでチェックボックス化
  3. hierarchical

特に③。階層化するかしないかの設定ですが、階層化したくなくてもtrueにする。以下関数リファレンスからの引用です。

hierarchical
真偽値) (オプション) true ならカテゴリーのような階層あり(子を持つ)タクソノミー、false ならタグのような階層化しないタクソノミー。

初期値: false

参考: 階層のあるタクソノミーの場合、投稿の編集ページにあるタクソノミー管理ボックスに、既存カテゴリーを選択できるチェックボックス付きリストを表示します(デフォルトの投稿カテゴリーのように)。階層化しないタクソノミーの場合、投稿に付けるタクソノミーのタームをタイプ入力するための空のテキストフィールドだけを表示します(デフォルトの投稿タグのように)。

https://wpdocs.osdn.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/register_taxonomy

 

なおカスタム投稿でGutenberg使用にはregister_post_typeにも以下。
'show_in_rest' => true,