Gilt ein Gutschein programmgesteuert in Woocommerce
In Woocommerce versuche ich, einen Weg zu finden, gilt eine Ermäßigung von 10% auf eine komplette Bestellung des Kunden, wenn das Gewicht im Warenkorb mehr als 100 lbs. Ich bin einen Teil des Weges, um dieses Ziel zu erreichen. Für den nächsten Schritt, ich bin auf der Suche nach einer Möglichkeit, programmgesteuert anwenden, einen Gutschein-code über Aktion/Haken durch functions.php.
Scheint es, dass ich kann verwenden Sie die Funktion woocommerce_ajax_apply_coupon, dies zu tun ( http://docs.woothemes.com/wc-apidocs/function-woocommerce_ajax_apply_coupon.html ) aber ich bin nicht sicher, wie es zu benutzen.
Bisher hab ich geändert cart.php um das Gesamtgewicht aller Produkte in den Warenkorb zu legen, habe ich einen Gutschein, der gilt der Rabatt (wenn manuell eingegeben) und ich habe einige code auf functions.php um zu überprüfen, das Gewicht und display eine Meldung an den Benutzer.
EDIT: Teilweise code entfernt, abgeschlossen-code-Lösung unten.
Vielen Dank für die Anleitung Freney. Hier ist die Arbeit und das Endergebnis erfolgreich gilt der Rabatt coupon, wenn die Bedingung erfüllt ist, und auch entfernt, wenn er nicht mehr traf:
/* Mod: 10% Discount for weight greater than 100 lbs
Works with code added to child theme: woocommerce/cart/cart.php lines 13 - 14: which gets $total_weight of cart:
global $total_weight;
$total_weight = $woocommerce->cart->cart_contents_weight;
*/
add_action('woocommerce_before_cart_table', 'discount_when_weight_greater_than_100');
function discount_when_weight_greater_than_100( ) {
global $woocommerce;
global $total_weight;
if( $total_weight > 100 ) {
$coupon_code = '999';
if (!$woocommerce->cart->add_discount( sanitize_text_field( $coupon_code ))) {
$woocommerce->show_messages();
}
echo '<div class="woocommerce_message"><strong>Your order is over 100 lbs so a 10% Discount has been Applied!</strong> Your total order weight is <strong>' . $total_weight . '</strong> lbs.</div>';
}
}
/* Mod: Remove 10% Discount for weight less than or equal to 100 lbs */
add_action('woocommerce_before_cart_table', 'remove_coupon_if_weight_100_or_less');
function remove_coupon_if_weight_100_or_less( ) {
global $woocommerce;
global $total_weight;
if( $total_weight <= 100 ) {
$coupon_code = '999';
$woocommerce->cart->get_applied_coupons();
if (!$woocommerce->cart->remove_coupons( sanitize_text_field( $coupon_code ))) {
$woocommerce->show_messages();
}
$woocommerce->cart->calculate_totals();
}
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Erstellen Sie zunächst einen Rabatt-Gutschein (über http://docs.woothemes.com/document/create-a-coupon-programatically/):
Dann gelten, dass der Gutschein zu Ihrer Bestellung:
Dass die Letzte Funktion liefert einen BOOL-Wert: TRUE, wenn der Rabatt erfolgreich war, FALSE wenn es nicht gelingt, für eine Vielzahl von Gründen.
global $woocommerce;
zusammen mit Ihrem$total_weight
Linie.$woocommerce->cart->get_applied_coupons();
array, dann bewerben Sie sich$woocommerce->cart->calculate_totals();
.Ich mit dieser Lösung, aber es enthält einen bug, der wie der OP schrieb. Wenn der Benutzer springt die Vorschau den Warenkorb und geht direkt zur Kasse form, Sie gilt nicht für den Gutschein. Hier war meine Lösung.
Den folgenden kompakten code in eine süchtig-Funktion hinzufügen, einen Rabatt (Gutschein) basierend auf cart Gesamtgewicht anzeigen einer benutzerdefinierten Meldung. Wenn der Kunde änderungen Warenkorb Elemente, die den code prüfen cart items entfernen der Rabatt (Gutschein), wenn die Karre Gewicht ist unter dem angegebenen Gewicht.
Code:
Code geht in function.php Datei der aktiven-Kind-Thema (oder Themas). Getestet und funktioniert.