3

独自のアルゴリズムを使用してカスタム配送オプションを作成するWooCommerce用のプラグインを作成しています。

私はオブジェクト指向プログラミングに不慣れですが、自分がいるメソッド/クラス以外のメソッド/クラスに適切にアクセスする方法について非常に混乱しています.

現在、WooCommerce が使用する calculate_shipping() というクラスがあります。基本的に、私の新しい配送方法は WC_Shipping_Method クラスを拡張して、この新しい配送方法を追加します。

私の質問はこれです:

my_new_shipping_class()->calculate_shipping()で、次のクエリを実行する正しい方法は何ですか?

  1. ショッピング カート配列内のすべての商品と、関連する重量のリストを返します
  2. ユーザーがカートに入力した現在の郵便番号にアクセスする

いくつかの掘り下げから、必要なものがすべて含まれているように見える $cart_contents という配列があることがわかりました。(体重じゃないかも?)

これは の下WC_Cart->get_cart()にありますが、$cart_contents というパブリック配列もあります。これらのいずれかにアクセスする正しい方法は何ですか?

個々の製品の重量も下WC_Product->get_weight()にありますが、それを使用する必要があるかどうかはわかりません.

最終的に、返そうとしているのは、各製品の重量の並べ替えられた配列です。たとえば、カートに次のものが含まれているとします。

  • アイテム 1、数量: 各 1, 2 ポンド
  • アイテム 2、数量: 各 2、5 ポンド
  • アイテム 3、数量: 1、各 10 ポンド

[10,5,5,2] の配列を返したいので、これらの製品を最大重量の箱に入れ、各箱の個々の送料を返すアルゴリズムを実行できます。

この質問のほとんどは、おそらく基本的なオブジェクト指向プログラミングに関するものなので、ばかげた質問になってしまったらごめんなさい。

4

1 に答える 1

3

他の誰かがこれに関する情報を探している場合に備えて、これが私が思いついたものです。

このcalculate_shippingメソッドには$package、配送料の計算に必要な情報へのアクセスを提供するパラメーターがあります。

$package['destination']は住所情報の配列を提供し、 を使用して郵便番号にアクセスできました$package['destination']['postcode']

$package['contents']カート内のアイテムの配列へのアクセスを提供します (カートのアイテム ID をキーとします)。各項目内dataには、WC_Product インスタンスである配列要素があります。すべての製品重量にアクセスできた方法は次のとおりです。

foreach ( $package['contents'] as $item_id => $item ) {
    $product = $item['data'];
    $weight = $product->get_weight();
    // do something with the weight
}       
于 2013-09-29T06:29:22.787 に答える