カスタム投稿タイプの一覧ページは、アーカイブページのテンプレートをコピーして、スラッグを追加するだけで作ることができます。

アーカイブページの一覧ページはarchive.phpですよね。

カスタム投稿タイプの一覧ページはarchive-slug.phpです。

アーカイブページをコピーして、「-slug」を追加するだけですね。

「slug」のところはカスタム投稿タイプを作成したときのslugです。

プラグインのCustom Post Type UIを使った場合は、「投稿タイプの追加と編集」で設定する投稿タイプスラッグで入力したものになります。

function.phpregister_post_type()関数を使ってカスタム投稿タイプを登録した場合は、register_post_type()関数で指定した1つ目のパラメータがslugになります。

例:register_post_type(‘abc’,$args);

上の例でいうと、「abc」がslugになります。

ただ、もしカスタム投稿タイプの一覧ページのデザインと同じで良いのであればarchive.phpでもちゃんと表示されます。

WordPressにはテンプレートを適用する優先順位があるのはきっと知っていると思いますが、カスタム投稿タイプの一覧ページを表示するテンプレートの優先順位は以下の通りになります。

テンプレートの優先順位

archive-slug.php

archive.php

index.php

カスタム投稿タイプのサンプルコード

一覧ページの作成に必要な投稿タイプ名の取得・表示方法

カスタム投稿タイプの一覧ページを作るとなると、必要になるのがタイトル。
SEO的にも何のページなのかをはっきりと検索エンジンに伝えることで、ページへのアクセスを呼び込みやすくなります。

カスタム投稿タイプの一覧ページに必要なタイトルの要素としては、投稿タイプ名ですね。

よくある一般的なパターンとしては、「投稿タイプ名|サイトタイトル」。

仮に、投稿タイプが「都道府県」サイトタイトルが「山登り.com」だった場合は、

「都道府県|山登り.com」といった感じです。

カスタム投稿タイプの投稿タイプ名、つまり「都道府県」投稿タイプを作った場合、「都道府県」を取得して、ページの見出しなどに表示する方法を紹介します。

投稿タイプ名の取得方法は、同じ投稿タイプを表示する場合でも、一覧ページと個別投稿ページでは取得方法が異なります。

投稿タイプを個別投稿ページで取得する方法については、次回の記事で紹介します。

一覧ページで投稿タイプ名を取得する関数

さて、投稿タイプ名を表示するためには、post_type_archive_title()という関数を使います。

因みに、この関数は一覧ページでしか動作しないので注意して下さいね。

パラメータは2つあって、1つ目は、「投稿タイプの前につけるテキスト」。

そして、2つ目は表示をするかいなかのを決めるパラメータになります。

tureで表示、falseでは非表示になります。

ture:投稿タイプ名をHTMLに出力

false:HTMLには出力されず取得だけ。

プログラムで何か処理をする場合には、falseを使い、普通に表示する場合は、tureになりますが、実際の開発現場では、パラメータなしで使うことがほとんどでしょう。

また、普通に使う分にはfalseを設定する事はあまりないと思います。

さて、先ほどの「都道府県|山登り.com」を作り方ですが、至ってシンプルです。

post_type_archive_title()で投稿タイプ名を取得表示して、|を入れて、その後ろにbloginfo(‘name’)でサイト名を入れるだけです。

あとは、titleタグで囲むだけ。

上記のコードを利用する場合は、archive-○○.phpのようなアーカイブページよりも、きっとheader.phpで使うことの方が多くなると思います。

となると、フロントページや個別ページ等でも使うことになるheader.phpなので、アーカイブページで先ほどのタイトルを表示しようと思うと、条件分岐が必要になりますね。

だから、実際に使用するのは

になります。

ここで少し注目してもらいたいのがループ外で使っていること。

この関数はルール外でもループ内でもどちらもでも動作してくれます。

また、「表示」パラメータにfalseを指定した場合は、「投稿タイプの前につけるテキスト」の値は無視されることになります。