tips

welcartの商品情報に売上げ順位を表示する。

rankings

 

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>';
}
?>

コメントを残す

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