Ich muss den Preis eines Artikels im Einkaufswagen programmgesteuert und dynamisch ändern.
Ich habe verschiedene Kombinationen von Woocommerce-Action-Hooks, den Warenkorb- und Sitzungsobjekten ausprobiert, aber nichts scheint den Zweck zu erfüllen. Ich dachte, das wäre nicht so herausfordernd.
add_action( 'woocommerce_before_calculate_totals', 'change_cart_item_price' );
function change_cart_item_price( $cart_object ) {
foreach ( $cart_object->cart_contents as $key => $value ) {
if( 123 == $value['data']->id ) {
$new_price = function_to_get_new_price( $value, get_current_user_id( ) );
$value['data']->price = $new_price;
}
}
}
Der obige Code ändert den Preis für jeden Artikel nur auf der Checkout-Seite oder beim Aktualisieren des Warenkorbs (dh: Der Haken wird aufgerufen, wenn ein Artikel aus dem Warenkorb entfernt wird), aber nicht unbegrenzt.
Ich verwende das Add-on Woocommerce Gravity Forms. Ich habe insbesondere ein Produkt, das von einem bestimmten Benutzer mehrmals bestellt wird. Der Benutzer darf 5x kostenlos mit nur Versandgebühren und jede über 5 kostet 20 $. Ich habe so viel mit Gravity Forms-Hooks codiert und funktionsfähig, die Felder dynamisch füllen. Der Versand ist spezifisch für Felder innerhalb des Gravitationsformulars, daher überlasse ich diese Berechnung Gravity Forms.
Mein Problem ist, dass, wenn ein Benutzer die Menge dieses Produkts aus seiner Bestellung reduziert (einen der Artikel aus dem Warenkorb entfernt), der Preis für jeden Artikel desselben Produkts im Warenkorb neu berechnet werden sollte, andernfalls könnten sie vorbei sein -berechnet (Ein Artikel, der früher der 6. war, ist jetzt der 4., aber der Preis bleibt gleich, was er nicht sollte)
Deswegen, ich möchte den Preis jedes Artikels im Warenkorb basierend auf der Menge dieses bestimmten Produkts jedes Mal neu berechnen, wenn etwas aus dem Warenkorb entfernt wird.
— BEARBEITEN —
Der obige Code funktioniert, aber mir ist klar, dass das Problem eine benutzerdefinierte Schleife sein muss, die ich verwende, um die Preise anzuzeigen …
foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item ) {
$_product = $cart_item['data'];
if( 123 == $_product->post->ID ) {
$price_not_updated = $cart_item['data']->price;
}
}
Wo ist dein Code, der nicht funktioniert? Es ist am besten, wenn wir es uns ansehen könnten, um zu sehen, was Sie tun, und Ihnen zu helfen.
– Giacomo1968
10. Juni 14 um 2:44 Uhr
Danke Jake. Ich habe mit Code und einer detaillierteren Beschreibung meines Problems aktualisiert. Ich glaube, ich suche wirklich nur nach dem richtigen Woocommerce-API-Objekt oder Hook.
– matticus_1120
10. Juni 14 um 3:44 Uhr
Hast du dir das angeschaut? docs.woothemes.com/document/woocommerce-dynamic-pricing
– Giacomo1968
10. Juni 14 um 3:59 Uhr