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行。だいたいコメントアウトに書いた通りですが、
- show_in_rest …これがないとGutenbergエディターで表示されない
- meta_box_cb …これでチェックボックス化
- hierarchical
特に③。階層化するかしないかの設定ですが、階層化したくなくてもtrueにする。以下関数リファレンスからの引用です。
- hierarchical
- (真偽値) (オプション) true ならカテゴリーのような階層あり(子を持つ)タクソノミー、false ならタグのような階層化しないタクソノミー。
- 初期値: false
参考: 階層のあるタクソノミーの場合、投稿の編集ページにあるタクソノミー管理ボックスに、既存カテゴリーを選択できるチェックボックス付きリストを表示します(デフォルトの投稿カテゴリーのように)。階層化しないタクソノミーの場合、投稿に付けるタクソノミーのタームをタイプ入力するための空のテキストフィールドだけを表示します(デフォルトの投稿タグのように)。
なおカスタム投稿でGutenberg使用にはregister_post_typeにも以下。
'show_in_rest' => true,