[未解決] ログインユーザー別の受注リストの表示
-
投稿者投稿
-
2010年10月29日 7:55 AM #50036hasu参加者
ショッピングモールの制作実験として、店舗毎にユーザーを作成してもらい、ユーザー毎に商品を作成してもらい、ユーザー毎の売り上げデータを表示したいと構想しています。そこで
・受注リストを表示したときにログインユーザーの投稿した商品の受注のみを表示させたい。
・ホームで表示される受注数・金額や商品登録情報のデータもログインユーザーの物のみにしたいと思っています。
現在考えてる案としては、wp_usces_orderから注文商品のpost_idを取得し、そのpostの投稿者が現在のログインユーザーと同じ場合集計という形にしたいなと思っているのですが
どのあたりを弄ればいいのでしょうか?
2010年10月29日 9:11 AM #60655nanbuキーマスターこんにちは。
なかなか複雑なことを考えていらっしゃいますね。
逆に一つ質問したいのですが、1受注には複数の商品が入っている可能性が有ります。その商品の登録ユーザーが別の人だった場合はどうしますか?
商品の集計はできたとしても手数料などをどうしたらよいのかという問題が起こります。
受注の商品明細はシリアライズしてorder_cartというカラムに格納していますのでデータベースだけで集計させるのは難しいでしょう。
ショッピングモールの考え方としては、やはりマルチサイト機能を使うのが自然かと思います。ちょうど楽天市場のような感じです。
そして各サイトから商品を取り出してきて効果的に見せるモールページを作り出す拡張プラグインを作るといった感じです。フロントであるモールと各サイトを管理するバックエンドも必要になるでしょう。
なんだか面白そうですね。
2010年11月1日 1:01 AM #60656hasu参加者おはようございます。
1受注に複数店舗からの商品があった場合はその店舗の商品のみ表示して、他店舗の商品は表示させないようにしたい予定です。送料手数料は、各店舗毎に発生し、イメージとしてはamazonのマーケットプレイスが近いでしょうか。受注の時点で違う店舗のデータがあった場合は別受注として登録させるようにカスタマイズした方が早いのでしょうか。
当初はマルチサイト機能を考えていたのですが、全ての店舗でカートをまとめて使いたい。のと、ポイントを全店舗共通にしたい。という理由で、一つのWELCARTでまとめた方がいいかなあと思っていました。
とりあえずorder_cartの中身を色々解析していくつか試してみたいと思います。
2010年11月1日 3:58 AM #60657nanbuキーマスターなるほど。いずれにしてもとても難しいカスタマイズだと思います。コアファイルその他様々なファイルを修正しなくてはいけないでしょう。
何か発見が有りましたらフィードバックお願いいたします。
2010年11月1日 5:07 AM #60658hasu参加者classes/cart.class.phpのkey_unserializeを以下のように変更してget_cart時にaoutor_idとaoutor_nameを出力するようにしてみました。
// key unserialize **************************************************************
function key_unserialize($serial){
global $wpdb;
$array = unserialize($serial);
$ids = array_keys($array);
$skus = array_keys($array[$ids[0]]);
$row['serial'] = $serial;
$row['post_id'] = $ids[0];
$row['sku'] = $skus[0];
$row['options'] = $array[$ids[0]][$skus[0]];
$row['price'] = $_SESSION['usces_cart'][$serial]['price'];
$row['quantity'] = $_SESSION['usces_cart'][$serial]['quant'];
$row['advance'] = isset($_SESSION['usces_cart'][$serial]['advance']) ? $_SESSION['usces_cart'][$serial]['advance'] : array();
$row['author_id'] = $wpdb->get_var("SELECT post_author FROM {$wpdb->posts} WHERE ID = {$row['post_id']}");
$row['author_name'] = $wpdb->get_var("SELECT user_nicename FROM {$wpdb->users} WHERE ID = {$row['author_id']}");
return $row;
}このIDを基準に、受注時のデータベースに書き込む段階で受注データを分けようかと思ったのですが、受注データの書き込みをしている場所がわかりませんでした。申し訳ありませんがどこか教えてもらえませんでしょうか?
2010年11月5日 2:59 AM #60659hasu参加者受注データを投稿ユーザー毎に分離させるのに成功しました。
上記のコードを入力してauthor_idとauthor_nameを出力可能にしておきfunctionfunction.phpの
642行あたりにあるusces_reg_orderdataを
function usces_reg_orderdata( $results = array() ) {
global $wpdb, $usces;
// $wpdb->show_errors();
$carts = $usces->cart->get_cart();
$oeder_cart = array();
foreach($carts as $split_cart){
$oeder_cart[$split_cart['author_name']][] = $split_cart;
}
$entry = $usces->cart->get_entry();
foreach($oeder_cart as $cart){
if( empty($cart) )
return 0;
(省略。変更はありません)
$args = array('cart'=>$cart, 'entry'=>$entry, 'order_id'=>$order_id, 'member_id'=>$member['ID'], 'payments'=>$payments, 'charging_flag'=>$charging_flag);
do_action('usces_action_reg_orderdata', $args);
endif;
}
return $order_id;
}に変更したところ、受注データが二つに分けれました。
現在受注のメールもユーザー毎に割り振るための処理の修正も考えていますが、他にどこか修正しなくてはいけない場所等ありますでしょうか?
2010年11月5日 6:08 AM #60660nanbuキーマスター税込、送料無し、代引き無し、値引き無し、ポイント制無しでの運用、つまり単価かける数量のみの請求であればそのやり方も可能かと思います。
受注を分けてしまうということは、買い手にとっては複数回購入したような見え方になってしまう事がマイナスにならないでしょうか。買い手に見えるのはメールと購入履歴と言うことになります。
目的は管理画面での見え方(受注の集計)ですよね。それを実現させるためにフロントの部分を変更して買い手が混乱するようでは本末転倒になるので注意しなくてはいけないでしょうね。
僕でしたらカートや決済のところは触らずに、管理パネルにログインしたオーサーだけが見ることのできる管理ページを作って、受注データを仕分けして表示するようなことをするだろうと思います。それは拡張プラグインを作って機能を拡張する形でできますので、Welcart 本体を改変しなくてもいけることではないかと思います。
ブランチを作らなくても目的は果たせると言うことです。
-
投稿者投稿
- このトピックに返信するにはログインが必要です。