WordPressのカテゴリ一覧を自動生成する方法

WordPress

ブログをいじっていてカテゴリの一覧が欲しいと思ったことありませんか?

あまり使い道がなさそうと言われそうですが…メニューの「カテゴリ一覧」をクリックしたときに飛ばすページを作りたかったんですよね。

サブメニューがあるから上位のメニューはただの文字だけでも良いのですが、隣と合わせて何かしらへのリンクにしたいなぁと。

サイドバーのウィジェットにあるものがまさに欲しいものです。

↓これ

あれをブログの固定ページに置きたくて色々調べたのですが、それっぽいプラグインも見つからず…

近いものはあったのですが、

  • 子カテゴリ、孫カテゴリまで出てこない
  • 記事一覧へのリンクがついていない
  • デザイン変更用のクラス名を設定できない

など、希望を満たすサンプルがなかなか見つからずに苦戦したので、備忘がてらこの記事にまとめておきます。

スポンサーリンク

手順

早速カテゴリ一覧の固定ページを作る手順を紹介します。

文中で出てくる「ul-icon-01」というクラス名はCSSを適用するための名前なので、都合の良い名前に変更してOKです。

カテゴリ一覧表示用のPHPファイルを作る

cat_all.phpという名前のテキストファイルを作成し、以下のように記述します。

<?php
/*
 Template Name: Category All
 */
?>

<?php get_header() ?>
<h1 class="entry-title" itemprop="headline">カテゴリ一覧</h1>
<ul class="ul-icon-01">
<?php 
  $args = array(
    'title_li' => __(''),
    'walker' => new My_Walker_Category
  );
  wp_list_categories($args); 
?>
</ul>
<?php get_footer() ?>

このファイルを子テーマのフォルダにアップロードしてあげましょう。

Cocoonの場合であれば「/ドメイン名/public_html/wp-content/themes/cocoon-child-master」の下に置いておけばOKです。

アップロードしたファイルをWordPressの管理画面から編集することもできます。

WordPressの左部メニューから「外観⇒テーマの編集」と辿り、右川から「Category All~」を選べばOKです。

functions.phpに記載を追加する

functions.phpに以下の内容を追加します。

必ずfunctions.phpファイルをバックアップしてから編集しましょう。
//カテゴリ一覧作成用
class My_Walker_Category extends Walker_Category {
	function start_lvl(&$output, $depth=1, $args=array()) {
		$output .= "\n<ul class=\"ul-icon-01\">\n";
	}
}
function.phpについては、WordPressの左部メニューから「外観⇒テーマの編集」と辿ることで、編集することが可能です。

固定ページを作成する

次に固定ページの作成を行います。

タイトルとスラッグを入力したら、ページ属性のテンプレートから先ほど作成したPHPを選択します。

本文は空っぽのままで大丈夫なので、そのまま公開して完了です。

実際にカテゴリ一覧が表示されるか確認してみましょう。

以下のように表示されればOKです。

変更内容の意味

細かい話になるので、とりあえずカテゴリ一覧が作成できればそれで良いという人は読み飛ばしてください。

今回紹介したカテゴリ一覧作成手順で実施した内容は以下の通りです。

  1. WordPressで用意されている「wp_list_categories」というテンプレートタグを使ったPHPファイルを作成。
  2. wp_list_categories」で使用されている「Walker_Category」というクラスの内容をカスタマイズ(クラス名出力を追加)したクラス「My_Walker_Category」を作成してfunctions.phpに追記。
  3. ①の「wp_list_categories」で②で作成した「My_Walker_Category」を使うように記載。
    →「'walker' => new My_Walker_Category」の部分
  4. ①を使用した固定ページを作成。

WordPressのテンプレートタグでは処理の内容を記述した部分を自分でカスタマイズしたものに置き換えられるように作られているものが多く、内容を理解していればいかようにでもカスタマイズ可能です。

WordPressのオンラインマニュアルにしっかりと説明が書かれているので、目的に近いものを見つけさえできればかなり融通が利きそうですね。

おわりに

カテゴリ一覧の作成自体に意味があるかは分かりませんが、WordPressでは標準で用意されたテンプレートタグの一部の処理を自分でカスタマイズしたものに置き換えることができます。

実際にいじったのは今回がはじめてだったので良い勉強になりました。

この辺を本格的にいじろうとするとPHPの勉強は必須ですね。

逆にPHPとCSSをある程度勉強すればWordPressのカスタマイズはかなり柔軟にできそうです。

自分で書かなくても大抵のことは誰かが整理して公開してくれているので、それをコピペして使わせてもらうのが一番早そうです。

あまり需要はないかもしれませんが、似たようなことをやりたいという人がいれば参考にしてもらえると嬉しいです。

コメント