投稿のカテゴリーリストを独自に作成する方法

カテゴリーによる投稿の絞り込み(カテゴリーアーカイブ)のナビゲーション表示には通常 wp_list_categories() を使用しますが、固定ページ上で絞り込みを行いたい場合には、設定されているカテゴリー名とスラッグを一通り取得して独自にナビゲーションを作成する必要があります。
この場合には get_categories() を利用するのですが、たびたびその方法を忘れるので簡単にですがその覚え書きです。

以下は例として通常の「商品案内」の一覧ページ(アーカイブ)とは別に、「在庫一覧」の固定ページを追加で作成した場合のケースです。

stock01

Contents

固定ページのテンプレートを作成

まずは「在庫一覧」の固定ページをスラッグ「stock」で作成し、テーマディレクトリの「page.php」ファイルを複製して「page-stock.php」とリネームします。

「page-stock.php」をテキストエディタで開き、本文エリアを以下のように作成します。

続いて各部の詳細について解説します。

カテゴリーリストのナビゲーション部分

通常カテゴリーリストの出力にはwp_list_categories()を使用しますが、リンク先がカテゴリーアカイブのページになりますので、「在庫一覧」の固定ページ上でカテゴリーの絞り込みを行いたい場合は、独自にカテゴリーリストのナビゲーションを作成する必要があります。

独自にカテゴリーリストを作成する場合には、カテゴリーの「名前」と「スラッグ」が必要になりますので、次のようにget_categories()を使用して投稿のカテゴリー名($category->name)とスラッグ($category->slug)を取得します。

カスタムタクソノミーの場合

上記は通常の投稿(post)のカテゴリー(category)の場合ですが、カスタムタクソノミーのリストを作成する場合には次のようにget_categories()のパラメータを設定します。

その他、並び順の設定や記事の無いカテゴリーの除外などパラメータの詳細設定については、公式マニュアルをご参照ください。

在庫一覧の表示部分

固定ページ上に任意のループ(カスタムループ)を表示する場合には、WP_Queryクラスを使用します。

まずWP_Queryで任意のデータを取得するためのパラメータを下記のように設定します。

次にループ部分です。

最後に$tempに一旦格納していたメインクエリを$wp_queryに書き戻しします(リセット)。

(参考)ページテンプレート – 公式マニュアル

カテゴリーの絞り込み

カテゴリーリストのリンク先に設定した「?c=カテゴリースラッグ」のクエリ文字列からカテゴリーの絞り込みを次のように行います。

以上のように絞り込み条件のタームのスラッグを変数$termsに設定した上で、WP_Queryのパラメータ設定でタームのスラッグを次のように変更します。

カスタム投稿タイプに応用する際の留意点

WP_Queryを使用したカスタムループは、パラメータの設定値を「‘post_type’ => ‘カスタム投稿タイプのスラッグ’」とすることでカスタム投稿タイプにも応用可能ですが、「‘posts_per_page’ => 50」の設定値は一般設定の表示件数が優先されてしまうため、投稿タイプごとに表示件数を変えたい場合はfunctions.phpに以下の記述を追加する必要があります。

 

PR

DO WP 管理人