WordPressで規模の大きいサイトを作るには投稿画面が複数必要になる場合もあり、内容によっては固定ページなどで管理が難しいため投稿画面を新しく作成したときがあります。
そんな時新しく追加する投稿画面のことを『カスタム投稿タイプ』といいます。
基本的にfunction.phpにコードを追記していけば作成もできるのですが、正直初心者だしfunction触りたくない…という人もいるかと思います。
そんな時活躍してくれるプラグインが『Custom Post Type UI』です。
functionをいじらなくても管理画面で設定ができるので、カスタム投稿タイプを作ったことがない方におすすめのプラグインです。
目次
Custom Post Type UIをインストールしよう
とりあえず『Custom Post Type UI』をインストールしましょう。忘れずに『有効化』をします。
するとサイドナビに『CPT UI』の項目が追加されるので、とりあえずこちらの『投稿タイプの追加と編集』をクリックしてください。
Custom Post Type UIでカスタム投稿タイプの設定をしていこう
とりあえず基本は上記の空欄を埋めていけば大丈夫です。こんな感じです。基本的にはこれで『投稿タイプを追加』をクリックしてもらえれば無事作成がされます。
できました。
オプション
基本的にはそのままで大丈夫ですが、一部オプション設定の変更をした方がいい箇所があります。特にアーカイブの設定です。
WPを触っているとわかると思うのですが、基本的に記事の一覧ページなどはarchive.phpを使用します。
現状のままだとarchive.phpが使えない状態になっています。
そのため画面下のオプション部分を見ると『アーカイブあり』という項目があるため、デフォルトの『False』を『True』に変更をしましょう。
スラッグはデフォルトのままでよければ空白で問題ありません。
その他のオプションもあるのですが、細かくなってしまうのと基本的なものを作るのであればアーカイブの設定をしておけば問題ないかと思います。
Custom Post Type UIでカスタムタクソノミーの設定をしていこう
次にカスタムタクソノミーを作ってみます。カスタムタクソノミーとは…?と思われるかもしれませんがざっくりいうと投稿に付くカテゴリーのようなものです。
なのでカテゴリーが必要ないようなものでしたら特に作らなくても問題はないです。
今回はとりあえずつくるので、サイドナビから『タクソノミーの追加と編集』を選択します。
次に、投稿タイプと同じように各項目を埋めていきましょう。
『利用する投稿タイプ』を選択して紐づけることができるので、今回は先ほど作った『テスト投稿』を選択しましょう。
『テスト投稿』の欄に先ほどの『テストタクソノミー』が追加されています。
あとはカテゴリーだとかと同じ要領で内容を入れていけば、投稿画面で選択ができるようになります。
ちなみにタクソノミーで作ったカテゴリーのようなものは『ターム』と呼ばれています。
パーマリンクの設定
ここまで来たら、一旦パーマリンクの設定をします。といっても何かを入力する必要はなくデフォルトのままで大丈夫なのですが、たまにWPがカスタム投稿を認識してくれないので変更を保存ボタンを押す必要があります。
サイドナビから『パーマリンク設定』を選択。
難しいことは一旦おいておいて『変更を保存』ボタンをクリックします。これで表示がうまくいかないときに見られるようになると思います。
テンプレートを用意しよう
後はこれらを表示させるテンプレートを用意します。投稿の一覧を表示させるにはarchive.php
タクソノミーの記事一覧を表示させるにはtaxonomy.phpを使うのが基本です。
ですがカスタムで投稿を作ったからには通常の投稿とはまた別の見せ方をしたい、という場合が多いです。
その時にはarchive.phpを複製、リネームをしてarchive-{カスタム投稿タイプのスラッグ名}.phpのように名前を付けると、独立したテンプレートを作ることができます(例えば今回はarchive-testslug.phpとなります)。
タクソノミーも同じ要領でいけます。
taxonomy-{タクソノミーのスラッグ名}.phpとしてください(例えば今回はtaxonomy-testtax.phpとなります)。
ちなみにタクソノミーで作成したタームに対して作成したい場合はtaxonomy-{タクソノミーのスラッグ名}-{タームのスラッグ名}.phpとすると表示ができます。
その他はWPの公式にもいろいろ書いているので、こちらを参考にしてください。
WPテンプレート階層
あとはこれらのテンプレートをアップしてもらえれば新規のカスタム投稿タイプを作成して、ある程度表示されるような状態まで持っていくことができます。
テンプレートも細かい部分を表示させるためのコードを入れる必要はあるのですが、長くなってしまうので一旦はここまでで…。