Ich versuche, den Produktpreis im Warenkorb mithilfe der folgenden Funktion zu ändern:
add_action( 'woocommerce_before_shipping_calculator', 'add_custom_price'
);
function add_custom_price( $cart_object ) {
foreach ( $cart_object->cart_contents as $key => $value ) {
$value['data']->price = 400;
}
}
In WooCommerce Version 2.6.x funktionierte es einwandfrei, ab Version 3.0 funktionierte es jedoch nicht mehr
Wie kann ich es in WooCommerce Version 3.0+ funktionieren lassen?
Vielen Dank.
Update _ (September 2018)
Mit WooCommerce Version 3.0+ benötigen Sie:
woocommerce_before_calculate_totals
-Hook.get_cart()
set_price()
Hier ist der Code:
add_action( 'woocommerce_before_calculate_totals', 'add_custom_price', 20, 1);
function add_custom_price( $cart_obj ) {
// This is necessary for WC 3.0+
if ( is_admin() && ! defined( 'DOING_AJAX' ) )
return;
// Avoiding hook repetition (when using price calculations for example)
if ( did_action( 'woocommerce_before_calculate_totals' ) >= 2 )
return;
// Loop through cart items
foreach ( $cart_obj->get_cart() as $cart_item ) {
$cart_item['data']->set_price( 40 );
}
}
The Code wird in function.php -Datei Ihres aktiven untergeordneten Designs (oder Designs) oder auch in einer beliebigen Plugin-Datei gespeichert.
Dieser Code wurde getestet und funktioniert.
Hinweis: Sie können die Hook-Priorität von
20
auf1000
_ (oder sogar2000
) erhöhen, wenn Sie einige verwenden einige spezifische Plugins oder andere Anpassungen.
Verbunden:
Mit WooCommerce Version 3.2.6 funktioniert die Antwort von @ LoicTheAztec für mich, wenn ich die Priorität auf 1000 erhöhe.
add_action( 'woocommerce_before_calculate_totals', 'add_custom_price', 1000, 1);
Ich habe die Prioritätswerte 10
, 99
Und 999
Ausprobiert, aber der Preis und die Gesamtsumme in meinem Warenkorb haben sich nicht geändert (obwohl ich mit get_price()
bestätigen konnte, dass set_price()
tatsächlich funktioniert hat) Stellen Sie den Preis des Artikels ein.
Ich habe einen benutzerdefinierten Hook, der meinem Einkaufswagen eine Gebühr hinzufügt, und ich verwende ein Plugin eines Drittanbieters, das Produktattribute hinzufügt. Ich vermute, dass diese WooCommerce "Add-Ons" Verzögerungen verursachen, bei denen ich meine benutzerdefinierte Aktion verzögern muss.