Facebook にシェア
[`evernote` not found]
LINEで送る

色々話題のグルーポンをちょっと覗いてみたのですが、その中にXXX人の人が購入されました。
というメッセージが有りました。
そういやWelcartにベストセラーウィジェットはあるものの、購入数まで表示する関数はなかったなーと思い、自作してみました。

*注意 必ずWelcartをインストールした状態でご使用ください。また、データベースに直接アクセスしますので自己責任でお願いします。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
function buycount($day,$post_id,$sku){
global $wpdb;
    $count=0;
    if(!$day){$day=7;}
    if(!$post_id){global $POST;$post_id = $POST->ID;}
    $table_name = $wpdb->prefix . 'usces_order';
    $date = date('Y-m-d 00:00:00',strtotime("-{$day} day"));
    $query = $wpdb->prepare("SELECT * FROM $table_name WHERE order_date >= %s", $date);
    $rows = $wpdb->get_results($query, ARRAY_A);
    foreach($rows as $row){
        $carts = unserialize($row['order_cart']);
        foreach($carts as $cart){
            if($post_id){$cart_id = $post_id;}else{$cart_id = $cart['post_id'];}
            if($sku){$cart_sku = $sku;}else{$cart_sku = $cart['sku'];}
            if($cart_id == $cart['post_id'] && $cart_sku == $cart['sku']){$count+=$cart['quantity'];}
        }
    }
    return $count;
}

以上をfunctions.phpにで放りこんで表示したい場所に

1
この商品は<?php echo buycount();?>個売れています。

等表示すればOKです。
引数は
$day 集計する日数。初期値7日。あまり大きくすると読み込むデータが増えるので重くなるかも。
$post_id 集計する商品のpost_id 初期値は表示するページのpost->ID
$sku 集計する商品のsku 初期値は空。

なお、これは商品の売上個数を表示します。もし、商品を買ってくれた人数を表示したいのなら

1
if($cart_id == $cart['post_id'] && $cart_sku == $cart['sku']){$count+=$cart['quantity'];}

1
if($cart_id == $cart['post_id'] && $cart_sku == $cart['sku']){$count++;}

に変更してみてください。