カテゴリーページやアーカイブページで投稿の一覧表示する場合にカテゴリー別のランキングを表示する方法
※必要なページに表示させたい場合は1行目でカテゴリーページの指定を行う
※welcart絡みの場合、別途function.phpに商品のメイン画像を取得して表示させる記述が必要
<?php if(is_category(array('cat_name1','cat_name2','cat_name3','cat_name4'))): ?>
<div id="ranking">
<?php
if ( function_exists( 'wpp_get_mostpopular' ) ) {
// カテゴリー、又はタグ名を格納する変数を定義
$term_name = NULL;
// 投稿ページの場合
if( is_single() ){
$cat = get_the_category();
$term_id = $cat[0]->term_id;
$term_name = $cat[0]->name;
// カテゴリー別の記事ランキングを表示するためのパラメータを指定
$term_arg = array(
// カテゴリーidを指定
'cat' => $term_id,
);
// アーカイブページの場合
}elseif( is_category() || is_tag() ){
$obj = get_queried_object();
$taxonomy = $obj->taxonomy;
$term_id = $obj->term_id;
$term_name = $obj->name;
// カテゴリーまたは、タグ別の記事ランキングを表示するためのパラメータを指定
$term_arg = array(
// タクソノミーを指定
'taxonomy' => $taxonomy,
// タームidを指定
'term_id' => $term_id,
);
}
// 共通するパラメータを指定
$arg = array (
// 記事を表示する最大件数
'limit' => 5,
// 集計期間。 daily, weekly, monthly, all のいずれかを指定
'range' => 'weekly',
// ソート順の対象。 views(閲覧数), comments(コメント数), avg(1日の平均)のいずれかを指定
'order_by' => 'views',
// ポストタイプを指定。post, page, などを指定
'post_type' => 'post',
);
// カテゴリー、又はタグ名を取得した場合
if( $term_name ){
// カテゴリー、又はタグ別の記事ランキング表示するためのパラメータを結合
$arg = array_merge( $term_arg, $arg);
echo "<h3>" . esc_html( $term_name ) . "のアクセスランキング</h3>";
}else{
echo "<h3>アクセスランキング</h3>";
}
wpp_get_mostpopular( $arg );
}
?>
</div><!--/ranking-->
参考:https://blog-and-destroy.com/6847



