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();
    }
}
InformationsquelleAutor msargenttrue | 2013-04-01
Schreibe einen Kommentar