ショートコードを使ってカテゴリ一覧ページを作る方法[WordPress]

シェアしていただけるとうれしいです

flowers


WordPressの「カテゴリーページ」は、そのカテゴリーに属する記事の一覧が表示されます。

カテゴリーが階層構造になっている場合、そのカテゴリーと、そのカテゴリーに属する「子カテゴリー」「孫カテゴリー」の記事もごっちゃになって表示されます。

つまり、こんな感じの構造のカテゴリーの場合です。

  •  親
    •  子
      •  孫

「親カテゴリー」のページに「子カテゴリー」「孫カテゴリー」の記事も表示されてしまうので、違和感を感じます。

そこで、「カテゴリーのページ」にはそのカテゴリーに属する「小カテゴリー」の一覧を表示するようにしてみました。

親カテゴリーページ

親カテゴリーページ

子カテゴリーページ

子カテゴリーページ

なお、カテゴリーページに手を加える方法がわからなかったので、「固定ページ」を作成し、その固定ページをカテゴリーのページとしました。

ショートコードを使ってカテゴリ一覧ページを作る方法

方法は簡単です。

  1. カテゴリー一覧を出力するPHPファイルを作る
  2. function.phpにショートコードを追加するコードを追記する

これだけです。

カテゴリー一覧を出力するPHPファイルを作る

テキストエディタを使って、下記のコードをコピペします。

日本語は書いていないので文字コードはなんでもいいですが、文字コードと改行コードを指定できるなら、UTF-8でLFで保存してください。

「’orderby’」の部分はこちらを御覧ください。

ファイル名は「category_list.php」としておきます。

この保存した「category_list.php」をFTPクライアントソフトでサーバーへアップロードします。
アップロードする場所は、

  • 子テーマを使っている場合:子テーマのディレクトリ
  • 子テーマを使っていない場合:テーマのディレクトリ

です。

ぼくの場合はSimplicityで子テーマを使っているので、「wp-content/themes/simplicity2-child」にアップロードしました。

category_list.phpをアップロード

FTPの使い方はこちらの記事をご参照ください。

やさしいFTPクライアントソフト・FFFTPの使い方[WordPress]
みなさんこんにちは。さかのうえのまろ(@sakanoueno_maro)です。 ブログやWebページを置いているWebサーバにはファイ

function.phpにショートコードを追加するコードを追記する

コードを追記するfunction.phpは、

  • 子テーマを使っている場合:子テーマのfunction.php
  • 子テーマを使っていない場合:テーマのfunction.php

です。

青枠で囲った部分をfunction.phpの一番最後に追記すればいいでしょう。


(画像をクリックすると大きくなります)

ショートコードを埋め込む

カテゴリのリストを表示したい場所に、下記のようにショートコードを埋め込みます。

  1. 指定のカテゴリIDの下の1階層のみ表示したいとき
  2. 指定のカテゴリIDの階層から下の階層のカテゴリをすべて表示したいとき

「category」には、親としたい(一番上の階層としたい」カテゴリのIDを指定します。

「depth」には、表示する階層の「深さ」を指定します。指定なしのときはすべての階層を表示します。

「1.」の場合はこんな感じになります。

「2.」の場合はこんな感じになります。

補足説明など

wp_list_categories()関数のオプション

wp_list_categories()関数はたくさんのオプションを指定できます。詳しいオプションの説明はwp_list_categories()のページをご覧いただくとして、少し手を加えているところを説明いたします。

orderby

オプションの「orderby」の有効な値は下記が記載されています。

  • ID – カテゴリーID
  • name – カテゴリー名のアルファベット順(初期値)
  • slug
  • count – カテゴリーの投稿数
  • term_group

今回の場合は「term_order」という値を指定します。これは、データベースの「wp_terms」テーブルの「term_order」というフィールド(カラム)を指定しましました。この値は標準では指定できません

「Custom Taxonomy Order NE」という「カテゴリ」や「タグ」の並び替えを自由に行うことができるプラグインをインストールしているのですが、これをインストールしたときに追加されたフィールド(カラム)です。

Custom Taxonomy Order NE

ですので、「Custom Taxonomy Order NE」をインストールしていない環境の場合は、wp_list_categories()のページに記載されている上記のオプションから選んで指定してください。

child_ofとdepth

「child_of」はこのカテゴリーIDより下のカテゴリが表示されます。

「depth」が表示する階層の深さです。

これら2つのオプションをショートコードで変更できるようにしています。

echo

「wp_list_categories()」単体でリストの表示をしてくれますが、親カテゴリに記事が1件もない場合も記事の件数が「(0)」と表示されてしまいます。それが嫌だったので、「’echo’ => 0」を指定し、直接リストを表示しないようにしています。

PHPのstr_replace()関数を使って、「(0)」を空文字に変換し、「echo」で画面に出力させています。

カテゴリIDを調べる

WordPressの関数は、カテゴリー、タグ、投稿ページ、固定ページにしても「ID」で指定しなさいというものが多いくせに、「ID」を簡単に知る方法がないんです。

カテゴリIDを知るには下記の方法をお試しください。

カテゴリーの変種ページをクリックするとURL(アドレス)が下記のように表示されます。

カテゴリIDを知る方法
(画像をクリックすると大きくなります)

「tag_ID=223」

と書かれている部分がありますが、この「223」が「カテゴリーID」です。

結構簡単でした

色々ググって調べたり、WordPressの関数リファレンスを見たりしましたが、結構簡単にできました。

それではみなさん、楽しいブログライフを!

いわゆる「画像直リンク」、画像の複製は固くお断りいたします。
スポンサーリンク

シェアしていただけるとうれしいです

フォローよろしくお願いします

関連記事