LESSON / WP LOAD

カスタム投稿タイプと分類を作る

制作実績を通常投稿から分け、カスタム投稿タイプとタクソノミーで管理・表示します。

目安 90分 コース進捗 0 / 17

GOAL

このレッスンでできるようになること

  • 投稿タイプを分ける理由を説明できる
  • register_post_typeで制作実績を登録できる
  • register_taxonomyで分類を追加できる

お知らせと制作実績では、入力項目、URL、一覧ページが異なります。内容の種類が明確に異なる場合は、カスタム投稿タイプとして分けると管理しやすくなります。

今回は制作実績をworks、業種による分類をwork_typeとして登録します。すべてをカスタム投稿へ分けるのではなく、運用方法と必要な一覧を先に決めてください。

制作実績の投稿タイプを登録する

内容の種類が異なる制作実績は投稿タイプを分け、必要な分類をタクソノミーとして追加します。

通常投稿とは別の制作実績を業種タクソノミーで分類する関係
通常投稿とは別の制作実績を業種タクソノミーで分類する関係
function wpload_register_content_types() {
 register_post_type(
  'works',
  array(
   'labels' => array(
    'name'          => '制作実績',
    'singular_name' => '制作実績',
    'add_new_item'  => '制作実績を追加',
    'edit_item'     => '制作実績を編集',
   ),
   'public'       => true,
   'show_in_rest' => true,
   'has_archive'  => true,
   'rewrite'      => array( 'slug' => 'works' ),
   'menu_icon'    => 'dashicons-portfolio',
   'supports'     => array( 'title', 'editor', 'thumbnail', 'excerpt' ),
  )
 );
}
add_action( 'init', 'wpload_register_content_types' );

show_in_restをtrueにするとブロックエディターやREST APIに対応します。supportsには実際に入力する機能だけを指定します。

業種のタクソノミーを登録する

タクソノミーは投稿を分類する仕組みです。カテゴリーのように親子を持たせる場合はhierarchicalをtrueにします。

次の画像は、「業種のタクソノミーを登録する」で扱うコードや構成をブラウザで表示した結果です。

「業種のタクソノミーを登録する」で扱うコードや構成の表示結果
「業種のタクソノミーを登録する」で扱うコードや構成をブラウザで表示した結果
function wpload_register_content_types() {
 // register_post_type()は前のコードと同じ位置に残します。

 register_taxonomy(
  'work_type',
  array( 'works' ),
  array(
   'labels' => array(
    'name'          => '業種',
    'singular_name' => '業種',
   ),
   'public'            => true,
   'show_in_rest'      => true,
   'hierarchical'      => true,
   'show_admin_column' => true,
   'rewrite'           => array( 'slug' => 'work-type' ),
  )
 );
}
add_action( 'init', 'wpload_register_content_types' );

実際には同名の関数やadd_action()を二重に書かず、前のwpload_register_content_types()の中へregister_taxonomy()を追加します。

一覧と詳細のテンプレートを用意する

  • archive-works.php:制作実績の一覧
  • single-works.php:制作実績の詳細
  • taxonomy-work_type.php:業種ごとの一覧

最初はarchive.phpsingle.phpを複製し、見出しと表示項目を制作実績向けに変更します。テンプレート階層に沿ったファイル名でなければ読み込まれません。

次の図では、「一覧と詳細のテンプレートを用意する」の仕組みや関係を確認できます。

「一覧と詳細のテンプレートを用意する」の仕組みや関係を示す図
「一覧と詳細のテンプレートを用意する」の仕組みと関係

パーマリンクを更新する

投稿タイプやURL設定を追加した直後に404になる場合は、管理画面の「設定」→「パーマリンク」を開き、設定を保存します。これによりURLのルールが更新されます。

次の図では、「パーマリンクを更新する」の仕組みや関係を確認できます。

「パーマリンクを更新する」の仕組みや関係を示す図
「パーマリンクを更新する」の仕組みと関係

flush_rewrite_rules()を毎回のアクセスで実行すると負荷がかかります。initの関数内へ安易に書かないでください。

管理と表示を確認する

投稿タイプと分類を登録した後は、複数の制作実績を入力して一覧表示を確認します。

飲食店、医療、教育の分類と3件の制作実績を表示した一覧ページ
飲食店、医療、教育の分類と3件の制作実績を表示した一覧ページ
  1. 管理画面から業種を2つ作る
  2. 制作実績を3件以上登録して業種を設定する
  3. 一覧、詳細、業種別一覧を開く
  4. アイキャッチ画像がない投稿も崩れないか確認する
  5. REST APIに制作実績と業種が出るか確認する
  6. 存在しない制作実績URLが404になるか確認する

CHECK POINT

完了条件