スポンサーリンク
タグの一覧表示に、その「タグの付いた記事の数」を追加してみました。
普段使っているタグ一覧を表示する標準の関数「the_tags()」では、「記事数」を追加する方法がなさそうだったので、自分で関数を実装してみました。ソースコードを共有しておきます。プラグインは使いません。
スポンサーリンク
きっかけ
きっかけは、nanapiのSEO記事から次のツイートを見つけたことです。
けんすうさんが先日このカテゴリリンクに記事数を掲載するのは、ユーザーがクリックする率が上がったそうです。 #cssnitelp24
— Naoya Misawaさん (@creatry) 9月 22, 2012
カテゴリに記事数を追加したらクリック率が上がったそうです。たしかにそんな気がしてきました。
これがきっかけで、自分はタグについて同じことをしてみようと思いました。
出力例
たとえばこんな出力が実現できます。
タグ: Eclipse(24件), Java(11件), Maven(4件)
ソースコード
まず「外観>テーマ編集」にある「function.php」に次のコードを追加します。
/* タグ(記事数), タグ(記事数), ...を表示する関数 */ function the_tags_with_count( $before = '', $sep = '', $after = '') { $posttags = get_the_tags(); if(!$posttags) return false; // tagの無い記事の場合終了 foreach($posttags as $tag) { $link = get_tag_link( $tag->term_id); if ( is_wp_error( $link ) ) return $link; $tag_links[] = '<a href="' . esc_url( $link ) . '" rel="tag">' . $tag->name . '(' . $tag->count . '件)' .'</a>'; } $tag_links = apply_filters( "term_links-$taxonomy", $tag_links ); echo $before . join( $sep, $tag_links) . $after; }
使い方(テンプレートへの追加方法)
使い方は標準のthe_tagsと同じで、次のように書けばOKです。先ほどの出力例は、「外観>テーマ編集>単一記事の投稿(single.php)」に次のコードを追加した結果です。
<?php the_tags_with_count('キーワード: ', ', '); ?>
※「タグ(999件)」数字の前後の「(」「件)」を変更したい場合は、「$tag_links[] = '' . $tag->name . '(' . $tag->count . ')' .'';」の行を変更してください。
感想
WordPressの「the_tags」のコードを読んで、真似して書いた感じです。やはり本家のソースコードはとても参考になります。
Webで検索してみると、the_tagsを拡張するために、「foreachとnextを使うなどして何度もechoして、最後のループだけ別動作でセパレータ($sep)を出力しないようにする」という方法で実装している人が多かったのですが、WordPress本体では、joinを使って配列を結合してからechoする(最後の行)という方法をとっているのですね。
参考
- 「the_tagsのソースコード(WordPress 3.4.2)」←実装方法の参考にしました
- 「PHP関数講座:join | そふぃのphp入門」←join関数の使い方について
スポンサーリンク
スポンサーリンク