WordPress:カテゴリに記事数を表示させる

今回もクライアントからの希望で「WordPressのカテゴリーに記事数を表示させたい」という要望からの記事である。

カテゴリの呼び出しには「wp_list_categories()」という関数が使われている。そして、その中に記事数の表示をするかしないかの設定が組み込まれている。

おっと、その前に。ウィジェットの設定の部分で「投稿数を表示」とあればそれにチェックを入れるだけで良いので、確認してみよう。そしてもし投稿数が出たとしても表示が変だったり記事数までリンクにしたい場合は後述の「記事数をリンクに含める」を参考にして欲しい。

さて「wp_list_categories()」がどこにあるかというと、「 wp-includes/category-template.php」のファイルの中だ。

おおよそ以下のように書かれているのではないだろうか。

<?php $args = array(
	'show_option_all'    => '',
	'orderby'            => 'name',
	'order'              => 'ASC',
	'style'              => 'list',
	'show_count'         => 0,
	'hide_empty'         => 1,
	'use_desc_for_title' => 1,
	'child_of'           => 0,
	'feed'               => '',
	'feed_type'          => '',
	'feed_image'         => '',
	'exclude'            => '',
	'exclude_tree'       => '',
	'include'            => '',
	'hierarchical'       => 1,
	'title_li'           => __( 'Categories' ),
	'show_option_none'   => __( 'No categories' ),
	'number'             => null,
	'echo'               => 1,
	'depth'              => 0,
	'current_category'   => 0,
	'pad_counts'         => 0,
	'taxonomy'           => 'category',
	'walker'             => null
); ?>

各項目の説明はこちらを参考にして欲しい。

では、カテゴリのみに言及させて頂く事にするが、「‘show_count’ => 0,」の項目を見て頂きたい。

ここで、0というのが非表示で、1にすると表示するという設定になる。

説明はしたものの、ここで0を1に書き換えよ、という訳ではない。この関数に1を持っていくという作業が必要になる。

この設定をするのは、「sidebar.php」の中だ。テーマによっては違う場合もあるが、ほとんどはこの形である筈なのでこちらの設定方法のみ説明する事にする。ちなみにtarutoが使っているテーマはカスタム仕様なので別の設定が必要であった。

sidebar.php (場所:[外観]⇒[テーマの編集]のサイドバーにある)

<ul class="side_category">
 <?php wp_list_categories('orderby=count&order=desc&show_count=1&title_li='); ?>
</ul>

上記のように「wp_list_categories」を探し出し書き換えるというか追記する。そう、前述した「show_count=1」を追加した形である。これを引数としてもって行く事により、先程の0が1に変わり表示されるようになるのだ。

どうだろう、表示されただろうか。テーマによっては形が崩れていたり、改行されてて格好が悪いと感じる方もいるであろうから、もう一つ処方箋を出しておく事にする。

記事数をリンクに含める

記事数をリンクに含める事によって、形の崩れが解消出来る場合もあるので書いておく事にする。

やり方は非常に簡単で、以下のソースコードを「functions.php」に追加するだけである。

functions.phpの一番下に追加 (場所:[外観]⇒[テーマの編集]のサイドバーにある)

add_filter( 'wp_list_categories', 'my_list_categories', 10, 2 );
function my_list_categories( $output, $args ) {
  $output = preg_replace('/<\/a>\s*\((\d+)\)/',' ($1)</a>',$output);
  return $output;
}

以上だ。

もし、上手くいかないなどあれば是非相談して欲しい。

One thought on “WordPress:カテゴリに記事数を表示させる

<コメントを残す>

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

以下のタグと属性が使えます。

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>