[未解決] ログインユーザー別の受注リストの表示

フォーラム 使い方全般 [未解決] ログインユーザー別の受注リストの表示

  • このトピックには6件の返信、2人の参加者があり、最後にnanbuにより14年前に更新されました。
7件の投稿を表示中 - 1 - 7件目 (全7件中)
  • 投稿者
    投稿
  • #50036
    hasu
    参加者

    ショッピングモールの制作実験として、店舗毎にユーザーを作成してもらい、ユーザー毎に商品を作成してもらい、ユーザー毎の売り上げデータを表示したいと構想しています。そこで

    ・受注リストを表示したときにログインユーザーの投稿した商品の受注のみを表示させたい。

    ・ホームで表示される受注数・金額や商品登録情報のデータもログインユーザーの物のみにしたいと思っています。

    現在考えてる案としては、wp_usces_orderから注文商品のpost_idを取得し、そのpostの投稿者が現在のログインユーザーと同じ場合集計という形にしたいなと思っているのですが

    どのあたりを弄ればいいのでしょうか?

    #60655
    nanbu
    キーマスター

    こんにちは。

    なかなか複雑なことを考えていらっしゃいますね。

    逆に一つ質問したいのですが、1受注には複数の商品が入っている可能性が有ります。その商品の登録ユーザーが別の人だった場合はどうしますか?

    商品の集計はできたとしても手数料などをどうしたらよいのかという問題が起こります。

    受注の商品明細はシリアライズしてorder_cartというカラムに格納していますのでデータベースだけで集計させるのは難しいでしょう。

    ショッピングモールの考え方としては、やはりマルチサイト機能を使うのが自然かと思います。ちょうど楽天市場のような感じです。

    そして各サイトから商品を取り出してきて効果的に見せるモールページを作り出す拡張プラグインを作るといった感じです。フロントであるモールと各サイトを管理するバックエンドも必要になるでしょう。

    なんだか面白そうですね。

    #60656
    hasu
    参加者

    おはようございます。

    1受注に複数店舗からの商品があった場合はその店舗の商品のみ表示して、他店舗の商品は表示させないようにしたい予定です。送料手数料は、各店舗毎に発生し、イメージとしてはamazonのマーケットプレイスが近いでしょうか。受注の時点で違う店舗のデータがあった場合は別受注として登録させるようにカスタマイズした方が早いのでしょうか。

    当初はマルチサイト機能を考えていたのですが、全ての店舗でカートをまとめて使いたい。のと、ポイントを全店舗共通にしたい。という理由で、一つのWELCARTでまとめた方がいいかなあと思っていました。

    とりあえずorder_cartの中身を色々解析していくつか試してみたいと思います。

    #60657
    nanbu
    キーマスター

    なるほど。いずれにしてもとても難しいカスタマイズだと思います。コアファイルその他様々なファイルを修正しなくてはいけないでしょう。

    何か発見が有りましたらフィードバックお願いいたします。

    #60658
    hasu
    参加者

    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を基準に、受注時のデータベースに書き込む段階で受注データを分けようかと思ったのですが、受注データの書き込みをしている場所がわかりませんでした。申し訳ありませんがどこか教えてもらえませんでしょうか?

    #60659
    hasu
    参加者

    受注データを投稿ユーザー毎に分離させるのに成功しました。

    上記のコードを入力して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;

    }

    に変更したところ、受注データが二つに分けれました。

    現在受注のメールもユーザー毎に割り振るための処理の修正も考えていますが、他にどこか修正しなくてはいけない場所等ありますでしょうか?

    #60660
    nanbu
    キーマスター

    税込、送料無し、代引き無し、値引き無し、ポイント制無しでの運用、つまり単価かける数量のみの請求であればそのやり方も可能かと思います。

    受注を分けてしまうということは、買い手にとっては複数回購入したような見え方になってしまう事がマイナスにならないでしょうか。買い手に見えるのはメールと購入履歴と言うことになります。

    目的は管理画面での見え方(受注の集計)ですよね。それを実現させるためにフロントの部分を変更して買い手が混乱するようでは本末転倒になるので注意しなくてはいけないでしょうね。

    僕でしたらカートや決済のところは触らずに、管理パネルにログインしたオーサーだけが見ることのできる管理ページを作って、受注データを仕分けして表示するようなことをするだろうと思います。それは拡張プラグインを作って機能を拡張する形でできますので、Welcart 本体を改変しなくてもいけることではないかと思います。

    ブランチを作らなくても目的は果たせると言うことです。

7件の投稿を表示中 - 1 - 7件目 (全7件中)
  • このトピックに返信するにはログインが必要です。