2016-08-12 4 views
0

Ein Client hat eine sehr seltsame Anfrage: Sie möchten für eine Reihe von Gutscheincodes eine Gebühr zu einer Bestellung hinzufügen. Ist das möglich?WooCommerce - Machen Sie eine Reihe von Coupons hinzufügen eine feste Gebühr zu einer Bestellung

Das Problem, das sie zu lösen versucht, ist dies:

Zur Zeit der Speicher freies Verschiffen zu den unteren 48 Vereinigten Staaten bietet, für die ich Versandklassen und Tabellensätze richtig konfiguriert haben. Die Coupons, die der Kunde auf einer täglichen Deal-Site verkauft hat, sollen jedoch den kostenlosen Versandvorteil entfernen und eine feste Versandgebühr hinzufügen.

Wie kann dies erreicht werden?

Antwort

4

Ja, Sie können es mit dem Snippet-Code (für einen Satz von Coupons):

function coupon_add_cart_fee($bookable_total = 0) { 
    $has_coupon = false; 

    // Set here your specials coupons slugs (one by line - last one have no coma) 
    $coupon_codes = array (
     'your_coupon_code_slug1', 
     'your_coupon_code_slug2', 
     'your_coupon_code_slug3' 
    ); 

    // Set here your fee amount or make fees calculation (see the links in reference) 
    $fee = 20; 

    if (is_admin() && ! defined('DOING_AJAX')) 
     return; 

    // checking if that "special" coupon is applied to customer cart 
    foreach ($coupon_codes as $coupon_code) { 
     if (WC()->cart->has_discount($coupon_code)) { 

      // If yes apply the fee to the cart 
      if (!$has_coupon) { 
       $has_coupon = true; 
       break; 
      } 
     } 
    } 

    if ($has_coupon) { 
     WC()->cart->add_fee('Fees: ', $fee, false); 
    } 
} 
add_action('woocommerce_cart_calculate_fees','coupon_add_cart_fee'); 

Dieser Code getestet und es funktioniert.Es geht auf function.php Datei Ihres aktiven untergeordneten Themas oder Themas.


STEUER OPTIONS mit add_fee() method

WICHTIG: Die Tatsache, dass TAX funktioniert oder nicht mit add_fee() method hängt erste Ihrer Steuereinstellungen in WooCommerce.

Klasse WC_Cart add_fee() -Methode, fügt zusätzliche Gebühr in den Warenkorb.

add_fee(string $name, float $amount, boolean $taxable = false, string $tax_class = '' )> <!-- language: lang-css --> 

Parameters: 
    $name  Unique name for the fee. Multiple fees of the same name cannot be added. 
    $amount Fee amount. 
    $taxable (default: false) Is the fee taxable? 
    $tax_class (default: '') The tax class for the fee if taxable. A blank string is standard tax class. 

Referenz:

+0

Das sieht fantastisch aus und genau das, was ich brauche, @LoicTheAztec. Dies mag eine etwas grundlegendere PHP-Angelegenheit sein, die ich vermisse, aber kann ich ein Array von Gutscheincodes in der Variable "$ coupon_code" speichern, da die Gebühr hinzugefügt werden muss, wenn einer von vielen Codes verwendet wird? – Cmagb

+0

Perfekt getestet mit einem einzigen Gutscheinwert. Danke, dass Sie auch mit dem Array geholfen haben. Deine Hilfe ist sehr Willkommen! Definitiv viel lernen hier. – Cmagb

Verwandte Themen