ショウジンブログ on Hatena

“お芝居をしないと、この社会では異邦人として扱われるほかない”

投稿数の多いカテゴリを件数を指定して出力@WordPress

WordPressのカテゴリで、投稿数の多い順にソートしてリスト表示する例です。

f:id:showjinx:20160601125313p:plain

親カテゴリ、小カテゴリ、どちらも出力しています。HTMLの階層構造もそれに合わせて。

出力しているHTMLはこのように

<h2>投稿数の多いカテゴリ上位5件</h2>
<ul class="list_categories">
    <li><a href="http://wp.showzine.co/category/news/">お知らせ</a> (3)
<ul class='children'>
    <li><a href="http://wp.showzine.co/category/news/info-seminar/" >セミナー情報</a> (1)
</li>
</ul>
</li>
    <li><a href="http://wp.showzine.co/category/blog/">ブログ</a> (2)
<ul class='children'>
    <li><a href="http://wp.showzine.co/category/blog/life/" >生活</a> (1)
</li>
</ul>
</li>
    <li><a href="http://wp.showzine.co/category/info-arrival/" >入荷情報</a> (1)
</li>
</ul>

実際のコードはこちら

<h2>投稿数の多いカテゴリ上位5件</h2>
<ul class="list_categories">
<?php
$cats = wp_list_categories('echo=0&orderby=count&show_count=1&order=DESC&number=5&title_li=');
$cats = preg_replace('/ title=\"(.*?)\"/','',$cats);
$cats = preg_replace('/ class=\"(.*?)\"/','',$cats);
echo $cats;
?>
</ul>

wp_list_categories関数を使って orderby=count でソートの条件を「投稿数」に指定し、 order=DESC で投稿の多いものから出力。(降順)

また、show_countを有効にして各カテゴリでの投稿数も出力しています。不要な場合には値を「0」に。

出力するカテゴリの数はnumberで指定した5件。件というよりは、カテゴリ数ですね。投稿の多い順に、そのカテゴリを5つ表示しています。

親カテゴリ、小カテゴリをそれぞれカウントしてます。

title_li=

この指定(空指定)は、カテゴリーリストの出力時に余計なものを出力するのを避けるための記述です。ほとんどの場合、不要かと思います。(詳しくはお調べください、説明しにくいので)

$cats = preg_replace('/ title=\"(.*?)\"/','',$cats);
$cats = preg_replace('/ class=\"(.*?)\"/','',$cats);

この二行はデフォルト(この関数の)だと出力されるtitle、classを出力しないようにするためのものです。

この二行を有効にするには、合わせてwp_list_categries関数の引数に

echo=0

が必要です。

この記述がないと、以下のように細かくclass、titleが出力されます。CSSでデザインを変える等、必要な時もあるかと思うので、そこは適宜使い分けます。

<ul class="list_categories">
    <li class="cat-item cat-item-1"><a href="http://wp.showzine.co/category/news/" title="お知らせカテゴリーです。">お知らせ</a> (3)
<ul class='children'>
    <li class="cat-item cat-item-4"><a href="http://wp.showzine.co/category/news/info-seminar/" >セミナー情報</a> (1)
</li>
</ul>
</li>
    <li class="cat-item cat-item-2"><a href="http://wp.showzine.co/category/blog/" title="ブログカテゴリーです。">ブログ</a> (2)
<ul class='children'>
    <li class="cat-item cat-item-3"><a href="http://wp.showzine.co/category/blog/life/" >生活</a> (1)
</li>
</ul>
</li>
    <li class="cat-item cat-item-8"><a href="http://wp.showzine.co/category/info-arrival/" >入荷情報</a> (1)
</li>
</ul>