Ich möchte wissen, wie Sie die Preisberechnung abhängig von einigen internen Codierung aktualisieren. Dies ist der Preis, der in den Einkaufswagenartikel gehen muss, und bis jetzt zeigt der Einkaufswagenartikel nur die Grundkosten des Produkts an.Woocommerce - Benutzerdefinierte Warenkorb Artikel Preisberechnung
Technisch sollte der Preis geändert werden, wenn ein Produkt in den Warenkorb hinzugefügt wird.
Ich dachte, es so kalkuliert und zugeschickt musste:
global $woocommerce;
$items = $woocommerce->cart->get_cart();
foreach($items as $item => $values) {
if ($value['product_id'] == $product_id) {
$value['data']->set_price($price);
}
}
Da dies der Trick nicht tun, wo/wann muss ich die set_price() Funktion setzen. Wenn dies aufgerufen wird, ist der Einkaufswagen noch leer und die Schleife wird nicht eingegeben.
Mein Problem scheint mit Woocommerce Bookings zu sein, wie mit folgender Zeile $ this-> Preis wird nicht gesetzt und dann get_base_cost heißt nur die Basiskosten und nicht den "neu berechneten" Preis. Da es sich um ein buchbares Produkt handelt, scheint es schwieriger zu sein.
public function get_price($context = ‘view’) {
return apply_filters('woocommerce_get_price', $this->price ? $this->price : $this->get_base_cost(), $this);
}
Bei genauem Hinsehen $ dieses ich kann zumindest die beiden Preise in der class_wc_product_booking sehen, wo 300 die „Grundkosten“ und 250 der neu berechnete Preis, der bezahlt werden muss.
Ich löschte eine Menge des Arrays, das für dieses Problem nicht relevant sein sollte.
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
)
viel senden helfen ich Ihren Code in die functions.php kopiert und der Warenkorbpreis hat sich überhaupt nicht geändert? Auch mache ich einige Preisberechnungen abhängig von einem Formular und würde diesen Preis innerhalb der custom_cart_item_price Funktion benötigen? – achiever
@achiever Dieser Code funktioniert, fügt hinzu, es ist sehr klassisch (es gibt eine Menge Antworten auf SO) ... Vielleicht ist es besser, dass Sie Ihre Frage mit dem zugehörigen Code Ihrer Berechnungen aktualisieren ... wir wissen nicht wo und wie Du machst das eigentlich. So können wir Ihnen besser helfen. Sie sollten uns auch einige Informationen bezüglich der von Ihnen verwendeten WooCommerce-Version geben. Die neue Antwort von ** Aakanksh Patel ** funktioniert auch gut. – LoicTheAztec
Ich bin mir sicher, dass der Code funktioniert! Es ändert noch nicht "meinen" Preis, aber das könnte viele Gründe haben. Woocommerce v. 3.2.5 – achiever