2016-08-05 13 views
1

Ich bin in Woocommerce woocommerce_calculate_totals einhaken, um einen Mindestbestellwert für die Altersverifikation einzustellen. Grundsätzlich muss der Kunde mindestens 1 $ bestellen. Dies funktioniert auf der Warenkorbseite, aber die Zwischensumme wird von checkout.js überschrieben - ich kann sehen, dass sie nach dem Laden der Seite geändert wird.Woocommerce Warenkorb Änderungen werden von checkout.js

Hier ist mein Code in functions.php:

function hv_set_min_total() { 
    if(is_checkout()) { 
     global $woocommerce; 
     // set minimum cart total 
     $min_cart_total = 1; 

     // Total used before taxes and shipping 
     $total = $woocommerce->cart->subtotal; 

     // compare values 
     if($total < $min_cart_total) { 
      $diff = $min_cart_total - $total; 
      $woocommerce->cart->subtotal += $diff; 
      $woocommerce->cart->cart_contents_total += $diff; 
      $woocommerce->cart->subtotal_ex_tax += $diff; 
     } 
    } 
} 
add_action('woocommerce_calculate_totals', 'hv_set_min_total'); 

ich auch Einhaken in verschiedene andere Haken versucht haben, die alle Wert Ihrer ändern, aber immer noch von der checkout.js Datei überschrieben werden. Irgendwelche Ideen, wie ich das verhindern kann?

Andere Dinge, die ich habe versucht, aber immer noch entfernt bekommen:

  • Fee hinzufügen
  • Negativer Rabatt

Antwort

0

Wie sich herausstellt, offenbar die is_checkout() Methode false zurückgibt oder nicht verfügbar, wenn checkout.js Läufe, die in der Zwischensumme führte zu seiner ursprünglichen zurückkehrt zurück Zustand.

für jeden, der über dieses Thema gekommen ist: is_checkout() Methode ist checkout.js

0

Ich bin nicht gut bekommen, aber mal sehen, ob dies für Sie arbeitet, Sie verwenden die woocommerce_calculate_totals, aber Sie geben nichts zurück.

Was würde ich tun, ist:

function totales ($totals){ 
    //echo "<pre>"; 
    //print_r($totals); 
    //echo "</pre>"; 

    //All your code ... 

    $totals->subtotal_ex_tax = ($totals->subtotal_ex_tax - 100000); 
    $totals->cart_contents_total = ($totals->cart_contents_total - 15000); 

    return $totals; 

} 

add_action('woocommerce_calculate_totals', 'totales', 10 , 1); 

Auf diese Weise können Sie den Wert Ihrer und insgesamt ändern aber nicht den Preis des Produkts.

Wenn Sie whant über die Methode zu wissen, dass das Haken enthält go here

+0

Dank nicht verfügbar, aber das Problem, dass diese Schnipsel von der Arbeit war eigentlich die 'is_checkout()' Methode wurde verhindert. – visevo