Welcartで購入された数を表示する。
色々話題のグルーポンをちょっと覗いてみたのですが、その中に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 ++;} |
に変更してみてください。
こんばんは。
情報をいつもありがたく拝見しております。
こちらの、記事の通りに、Functionをいれこみ、実行を行いましたが、エラーが出てしまいます。
現在のバージョンでは、不可能な事象なのでしょうか?