カスタム投稿にカテゴリーを追加する

今回やりたいこと

WordPressでカスタム投稿を追加しただけでは、デフォルトの投稿機能にはついている「カテゴリー」や「タグ」の機能がついていません。

今回は例として作成したカスタム投稿に「カテゴリー」を追加してみようと思います。

カスタム投稿を追加する

今回は「よくある質問」という名前のカスタム投稿を追加してみます。(よくある質問の質問と答えを管理画面から簡単に投稿できるようにします。)

コードは以下のようになります。


// カスタム投稿 よくある質問
function qa_custom_post_type()
{
  register_post_type('qa', array(
    'labels'        => array(
      'name'               => 'よくある質問',
      'singular_name'      => 'よくある質問',
      'add_new_item'       => '新規をよくある質問追加',
      'add_new'            => '新規追加',
      'new_item'           => '新規よくある質問',
      'view_item'          => 'よくある質問を表示',
      'not_found'          => 'よくある質問は見つかりませんでした',
      'not_found_in_trash' => 'ゴミ箱によくある質問はありません。',
      'search_items'       => 'よくある質問を検索',
    ),
    'public'        => true,
    'show_ui'       => true,
    'query_var'     => true,
    'hierarchical'  => false,
    'menu_position' => 5,
    'supports'      => array('title', 'editor', 'revisions'),
    'rewrite'       => true,
    'has_archive'   => true,
  ));
}
add_action('init', 'qa_custom_post_type');      // よくある質問

これでとりあえず管理画面の左のバーの中に「よくある質問」という項目が追加できたかと思います。

この中に「カテゴリー」を設定できる機能を追加していきます。

カスタムタクソノミーを追加する

「register_post_type」のあとに「register_taxonomy」のコードを追記しましょう。


// カスタム投稿 Q&A
function qa_custom_post_type()
{
  register_post_type('qa', array(
    'labels'        => array(
      'name'               => 'よくある質問',
      'singular_name'      => 'よくある質問',
      'add_new_item'       => '新規をよくある質問追加',
      'add_new'            => '新規追加',
      'new_item'           => '新規よくある質問',
      'view_item'          => 'よくある質問を表示',
      'not_found'          => 'よくある質問は見つかりませんでした',
      'not_found_in_trash' => 'ゴミ箱によくある質問はありません。',
      'search_items'       => 'よくある質問を検索',
    ),
    'public'        => true,
    'show_ui'       => true,
    'query_var'     => true,
    'hierarchical'  => false,
    'menu_position' => 5,
    'supports'      => array('title', 'editor', 'revisions'),
    'rewrite'       => true,
    'has_archive'   => true,
  ));
 // ここから
  register_taxonomy('qa_category', 'qa', array(
    'label'        => '質問カテゴリー',
    'public'       => true,
    'show_ui'      => true,
    'hierarchical' => true, // 階層構造(ここをfalseにするとタグになります)
  ));
 // ここまで
}
add_action('init', 'qa_custom_post_type');      // Q&A

上記ポイントとして「hierarchical」の値です。
「true」の場合はカテゴリー(チェックボックスで選択できる)、「false」の場合はタグ(手入力・親子構造なし)となります。

階層構造が必要ない場合でもカテゴリー機能を追加したい場合はここをtrueにする必要があります。

related article

2020/01/17 WordPress

マルチサイトはlogin rebuilderプラグインは使えない

2020/01/21 WordPress

マルチサイトの子サイトだけにBasic認証をかける

2019/10/21 WordPress

Warning: count():のエラー解決策

2021/02/26 WordPress

デフォルトの「投稿」のURLをカスタマイズする