私はいくつかの内部コードに応じて価格計算を更新する方法を知りたいと思います。これはカートアイテムに入る必要がある価格であり、カートアイテムは製品の基本コストのみを表示します。Woocommerce - カスタムカートアイテムの価格計算
技術的には、製品がカートに追加されたときに価格を変更する必要があります。
私はそれがこのように言うアサーションされなければならなかった考え出し:これは/私はset_price()関数を配置する必要がありますトリックを、行いませんので
global $woocommerce;
$items = $woocommerce->cart->get_cart();
foreach($items as $item => $values) {
if ($value['product_id'] == $product_id) {
$value['data']->set_price($price);
}
}
。これが呼び出されると、カートはまだ空であり、ループは入力されません。
私の問題は、次の行の$ this-> priceが設定されていないため、get_base_costが呼び出されて「再計算された」価格ではなく基本コストが表示されるため、Woocommerce Bookingsにあるようです。これは予約可能な製品なので、これはもっと難しいようです。 $これをよく見る
はpublic function get_price($context = ‘view’) {
return apply_filters('woocommerce_get_price', $this->price ? $this->price : $this->get_base_cost(), $this);
}
私は、少なくとも300は、「基本料金」と250支払われなければなら再計算価格ですclass_wc_product_booking、内の両方の価格を見ることができます。
この問題に関連してはならない配列を大量に削除しました。
WC_Product_Booking Object (
[availability_rules:WC_Product_Booking:private] => Array ()
[object_type:protected] => product
[post_type:protected] => product
[cache_group:protected] => products
[data:protected] =>
Array (
[name] => Booking Test
[slug] => Booking Test
[sku] =>
[price] => 300
[regular_price] =>
[sale_price] =>
[rating_counts] => Array ()
[average_rating] => 0
[review_count] => 0
)
[supports:protected] => Array ()
[id:protected] => 1708
[changes:protected] => Array ([price] => 250)
[meta_data:protected] =>
[product_type] => booking
)
を助けるセッションで送信する必要がある場合 – achiever
@achieverこのコードは非常に古典的です(SOには多くの回答があります)...あなたの計算の関連コードで質問を更新する方が良いかもしれません...どこでどのようにあなたはこれを実際に作っています。そうすれば、私たちはあなたをより良く助けることができます。使用しているWooCommerceのバージョンに関連する情報も提供してください。 ** Aakanksh Patel **からの新しい答えもうまくいきます。 – LoicTheAztec
私はコードが動作すると確信しています!それはまだ "私"の価格を変更しませんが、それは多くの理由があります。 Woocommerce v。3.2.5 – achiever