welcartの商品情報に売上げ順位を集計して表示する
投稿内で順位を表示できれば、売上げランキング・トップ10にだけバナーを表示するとか、jQueryなんかのソートするプラグインを使うときの値に使用したりと、何かと便利なわけです。template_func.php内にbestsellerのIDを参照してる箇所があるので、その関数を利用します。
CODE:Get the usces sales ranking
<?php
// 投稿内で売上げ順位の登録と取得 //
global $usces;
$bsids = $usces->get_bestseller_ids( '90' ); // 引数は統計を遡る日数を指定
$ranking = $count = 0;
if ($bsids): foreach( $bsids as $bsid ):
$count++;
if ( $bsid === $post->ID ){
$ranking = $count;
break;
}
endforeach; endif;
if ( $ranking && $ranking <= 3 ) {
echo '<p>今売れています!</p><p>当店売上げランキング<strong>第'.$ranking.'位</strong></p>';
}
?>
投稿やカテゴリのテンプレート内で呼び出して下さい。
カテゴリ内限定の順位が知りたい場合
上の関数は、商品毎にサイト全体での売上げ順位を表示してくれるわけですが、「〜〜」部門第1位とかやりたいこともあるかもしれません。そういう場合は以下のようにしてやります。
投稿テンプレートで商品のカテゴリ内売上げ順位を表示したい場合
<?php
global $usces;
$bsids = $usces->get_bestseller_ids( '90' ); // 引数は統計を遡る日数を指定
$ranking = $count = 0;
$cat = 'カテゴリのID';
if ($bsids): foreach( $bsids as $bsid ):
if ( in_category( $cat, $bsid ) ){
$count++;
if ( $bsid === $post->ID ) {
$ranking = $count;
break;
}
}
endforeach; endif;
if ( $ranking && $ranking <= 3 ) {
echo '「'.get_category($cat)->name.'」部門売上げ<strong>第'.$ranking.'位</strong>';
}
?>
カテゴリ・テンプレートで商品のカテゴリ内売上げ順位を表示したい場合
商品数が少なければ、上の関数内の$catに直接カテゴリIDを代入しても良いのですが、流石に商品ひとつ毎にbestsellerを呼び出すのも効率が悪いので、以下のようにループ外で一度順位を取得してしまいます。
<?php
//ループ外での処理
global $usces;
$bsids = $usces->get_bestseller_ids( '90' ); // 引数は統計を遡る日数を指定
$count = 1;
$cat = get_query_var('cat');
if ($bsids): foreach( $bsids as $bsid ):
if ( in_category( $cat, $bsid ) ) $popular[ $bsid ] = $count++;// 順位を配列に入れる
endforeach; endif;
//ループ内での処理
if ( $popular[ $post->ID ] && $popular[ $post->ID ] <= 10 ) {
echo '「'.get_category($cat)->name.'」部門売上げ<strong>第'.$popular[ $post->ID ].'位</strong>';
}
?>