カテゴリーリストの投稿件数表示をアレンジ / wp_list_categories


リンク付きカテゴリーリストを表示するテンプレートタグ wp_list_categories。
このテンプレートタグは各カテゴリーごとに投稿数も表示することができる。
しかし、残念なことに表示デザインは固定のようで (10) のように括弧がついてしまう。
そこで投稿件数の表示を

カテゴリ名 (10)   ➡  カテゴリ名 …全10個

のようにアレンジしたい。

アレンジ方法

今回の方法は非常に単純で、 「(10)」の部分を探し出して「…全10個」に置換するだけ。

サンプル

wp_list_categories(‘show_count=1’);

テンプレートタグ wp_list_categoriesによりカテゴリーリストを表示させる為に生成されたhtmlタグは以下の通り。
パラメータの「show_count=1」は、各カテゴリーに投稿数を表示するかを指定する。
デフォルトは非表示(「show_count=0」と同じ状態)なので「show_count=1」と指定することにより投稿数を表示できる。

<li class="categories">カテゴリー<ul> <li class="cat-item cat-item-13">
<a href="http://www.xxx/category/news/" title="お知らせ">お知らせ</a> (1)
</li>
<li class="cat-item cat-item-12">
<a href="http://www.xxx/category/diary/" title="日記">日記</a> (1)
</li>
<li class="cat-item cat-item-1">
<a href="http://www.xxx/category/no_cat/" title="未分類">未分類</a> (4)
</li></ul></li>

2行目、5行目そして8行目の行末に投稿数が表示されているが、括弧( ) がついている。この括弧を置換する。

$variable = wp_list_categories(‘echo=0&show_count=1’);
$variable = preg_replace(“/\((\d+)\)/i”,”…全\\1個”,$variable);
echo $variable;

テンプレートタグ wp_list_categories だけどカテゴリーリストのhtmlタグを生成するだけでなくデフォルトでは出力までしてくれる。出力までしてくれるので便利なんだけど今回は困る。なぜならまだ置換してないからだ。なので出力しないようにパラメータに「echo=0」を追加する。これでwp_list_categories は出力ではなくhtmlタグを文字列として返してくれる。
文字列として受け取ったhtmlタグから ([投稿数] ) の部分を探し出し …全[投稿数]個 に置換するのがphpのpreg_replaceという関数。最後に置換後のhtmlタグを phpのechoという関数を使って出力する。
これで置換完了!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です