「WordPress Popular Posts」でカテゴリー別にランキングを表示させる方法

rank

 

「Wordpress Popular Posts」でカテゴリー別にランキングを出力しようと思ったら、あまり参考になる記事がなく、自身で実装したので、忘備録とボランティア精神でシェア致します。

wpp_get_mostpopularの引数でcatというものがあるので、カテゴリーを指定する

だけなのだが、条件分岐させないと実装したい動きが作れなかった。以下実装したい動き

少し困ったのが、category.phpの場合だ。親・子・孫カテゴリー構造がある際、弊社は、記事を登録する時には、孫カテゴリーにのみチェックする。そうすると、親カテゴリーや子カテゴリーページを開いた時にランキングが何も出ないのだ。

そこで、category.phpを開いた時に、そのカテゴリーが子孫カテゴリーを持っている場合は、子孫カテゴリーのidを全て取得し、ランキングに反映させることにした。

<?php
//表示させたいカテゴリーidを取得
 if (is_home()) {
  $mostcat = "none";//ホームの時は全部
 } elseif(is_single()){
 $catinfo = get_the_category();
  $mostcat =$catinfo[0]->cat_ID;//シングルの時は所属してるカテゴリのみ(先祖カテゴリ含まず)
 } elseif(is_category()){
  $cat_id = get_queried_object()->cat_ID;
  $categories = get_categories('child_of='.$cat_id.'');
  $mcarray = array();
  $i=0;
 if ($categories) {
  foreach($categories as $category) {
   $mcarray[$i] = $category->term_id;
   $i++;
  }
  $mostcat = implode(",",$mcarray);//カテゴリーページで子カテゴリを持っている場合はそのカテゴリーと子カテゴリーに含まる記事全部
 } else{
  $mostcat = $cat_id;//カテゴリーページで子カテゴリを持っていない場合は、そのカテゴリーに所属する記事のみ
 }
 } else{
  $mostcat = "none";//その他の時も全部
 }

//popular postを出力
wpp_get_mostpopular('
 range=daily&
 order_by=views&
 limit=5&
 post_type=post&
 stats_comments=0&
 stats_views=0&
 pages=0&
 thumbnail_width=50&
 thumbnail_height=50&
 thumbnail_selection=usergenerated&
 cat='.$mostcat.'&
 title_length=25
');
?>

こちらで出来上がり。wpp_get_mostpopularの中の引数は、それぞれで指定

rangeやorder_byやpost_typeの説明は省きますが、詳しいことはプラグインのパラメーターの箇所に書いてあります。

それぞれでご希望のパラメーターを使ってください。

2015/03/06

LINEで送る