2012-09-08 20 views
29
$replace_order = new WC_Cart(); 
$replace_order->empty_cart(true); 
$replace_order->add_to_cart("256", "1"); 

Der obigen Code Produkt 256 in den Warenkorb legen 1 Zeit. Aber das Problem, das ich habe, ist, dass ich in der Lage sein werde, den Produktpreis komplett außer Kraft zu setzen ... soweit ich das beurteilen kann, kann ich nur einen Coupon auf den Warenkorb anwenden.WooCommerce: Produkt mit Override zum Warenkorb hinzufügen?

Gibt es eine Möglichkeit, den Preis komplett zu übersteuern? Hier

+0

prüfen Link sehr nutzbringend https: //www.cloudways .com/blog/change-woocommerce-preis-display/ – Sourabh

Antwort

46

ist der Code für das Überschreiben Preis des Produktes in Warenkorb

add_action('woocommerce_before_calculate_totals', 'add_custom_price'); 

function add_custom_price($cart_object) { 
    $custom_price = 10; // This will be your custome price 
    foreach ($cart_object->cart_contents as $key => $value) { 
     $value['data']->price = $custom_price; 
     // for WooCommerce version 3+ use: 
     // $value['data']->set_price($custom_price); 
    } 
} 

Hoffen, dass es nützlich sein wird ...

+0

Vielen Dank! Hast du schon einige Erfahrungen mit WooCommerce? – dcolumbus

+5

Dies aktualisiert den Warenkorb. Aber immer noch in dem schnellen Einkaufswagen-Symbol oben zeigt es den tatsächlichen Produktpreis an. Irgendwelche Haken? –

+1

Entschuldigen Sie bitte dieses Problem ... funktioniert das obige mit Variationen? – danyo

41

Sie benötigen zur Überprüfung Produkt-ID, in obigem Code eine if Anweisung vorstellen:

add_action('woocommerce_before_calculate_totals', 'add_custom_price'); 

function add_custom_price($cart_object) { 
    $custom_price = 10; // This will be your custome price 
    $target_product_id = 598; 
    foreach ($cart_object->cart_contents as $value) { 
     if ($value['product_id'] == $target_product_id) { 
      $value['data']->price = $custom_price; 
     } 
     /* 
     // If your target product is a variation 
     if ($value['variation_id'] == $target_product_id) { 
      $value['data']->price = $custom_price; 
     } 
     */ 
    } 
} 

diesen Code an beliebiger Stelle hinzufügen und stellen Sie sicher, dass dieser Code immer ausführbar ist.

diesen Code hinzugefügt haben, wenn Sie anrufen werden:

global $woocommerce; 
$woocommerce->cart->add_to_cart(598); 

Nur dieses Produkt mit überschriebene Preis hinzugefügt werden, hinzugefügt andere Produkte Warenkorb für zwingende Preise werden ignoriert.

Hoffe, das wird hilfreich sein.

+1

Wie kann ich einen benutzerdefinierten Preis basierend auf Benutzereingaben festlegen? Dieser benutzerdefinierte Preis ist fest codiert. Irgendwelche Vorschläge? Etwas wie Funktion add_custom_price ($ cart_object, $ custom_price) – shish

+1

Wie kann ich dynamisch die Zielprodukt-ID des Produkts, von dem Hinzufügen zum Warenkorb Schaltfläche geklickt wird? –

+2

Scheint so, als ob diese beiden Antworten kombiniert werden sollten. – Kirby

1

Um es dynamisch zu machen (Preis für jeden Artikel im Warenkorb separat zu überschreiben), müssen Sie den Override-Produktpreis in Sitzung mit Warenkorb-Elementschlüssel als Sitzungsschlüssel unter Verwendung von woocommerce_add_to_cart Haken speichern.

durch diese Sitzung Werten Sie auch richtig Wagen Total und machen den veränderten Preis werden in der Auftragsposition berechnen

Sie die folgende guide für nähere Details mit einem Beispiel beziehen.

1

Mit WooCommerce 2.5 fand ich, dass dies ein 2-teiliger Prozess ist. Der erste Schritt besteht darin, die Laufzeitanzeige der Preisfindung zu ändern, wenn sie über den Filter "woocommerce_add_cart_item" zum Einkaufswagen hinzugefügt wird. Der zweite Teil besteht darin, die persistenten Sitzungsdaten festzulegen, die während des Checkouts über den Filter woocommerce_get_cart_item_from_session gelesen werden. Dies scheint schneller zu sein, als die Berechnungssummenfilter (wie beispielsweise woocommerce_before_calculate_totals) anzuhängen, da sie in WooCommerce sehr häufig ausgeführt werden.

Weitere Details hier: woocommerce change price while add to cart

+0

ist es möglich, den Preis jedes Produkts im Warenkorb hinzuzufügen, anstatt über hinzugefügte Warenkorb Produkte zu iterieren? –

0

Dies ist, wie ich es tat, zuerst ich meine benutzerdefinierte Preis hinzufügen Hexe cart_item_data können benutzerdefinierte Daten den Warenkorb Artikel speichern, verwenden Sie dann i woocommerce_before_calculate_totals, Schleife der Wagen und fügen Sie den zuvor zusätzlicher Preis.

function add_donation_to_cart() { 

    $cart_item_data = array('price' => $_REQUEST['donate_amount']); 
    $woocommerce->cart->add_to_cart(5395, 1, '', array(), $cart_item_data); 
} 


add_action('woocommerce_before_calculate_totals', 'add_custom_price'); 

function add_custom_price($cart) { 
    foreach ($cart->cart_contents as $key => $value) { 
     $value['data']->price = $value['price']; 
    } 
} 
1

Für jeden, der von Google kam. Das obige ist jetzt veraltet, da ich die Aktualisierung auf WooCommerce 3.0.1 festgestellt habe.

Statt der oben Sie jetzt brauchen set_price zu verwenden, anstatt price

Hier ist ein Beispiel:

add_action('woocommerce_before_calculate_totals', 'add_custom_price'); 
function add_custom_price($cart_object) { 
    $custom_price = 10; // This will be your custome price 
    foreach ($cart_object->cart_contents as $key => $value) { 
     $value['data']->set_price = $custom_price; 
    } 
} 

Ich hoffe, dass diese Menschen in der Zukunft hilft :)

7

ich versucht habe, Alle obigen Codebeispiele und neusten Woocommerce 3.0 unterstützen keine der obigen Beispiele. Benutze den untenstehenden Code und arbeite perfekt für mich.

add_action('woocommerce_before_calculate_totals', 'add_custom_price'); 

function add_custom_price($cart_object) { 
    $custom_price = 10; // This will be your custom price 
    foreach (WC()->cart->get_cart() as $cart_item_key => $cart_item) { 
     $cart_item['data']->set_price($custom_price); 
    } 
} 
+0

Versuchen Sie mein Beispiel oben. – danyo

+0

Diese Option ist nicht für mich gearbeitet. –

+0

Haben Sie den genauen Code ausprobiert? Ich habe dies in einem Live-Premium-Plugin mit 1000 Installationen ausgeführt. Welche Version von WooCommerce hast du installiert? – danyo

6

Nach der Veröffentlichung von Woocommerce Version 3.0.0 Produktpreis Update auf Hinzufügen zum Warenkorb mit set_price ($ Preis) -Funktion. Das Beispiel wird wie unten angegeben:

add_action('woocommerce_before_calculate_totals', 'mj_custom_price'); 

function mj_custom_price($cart_object) { 
    $woo_ver = WC()->version; 
    $custom_price = 10; 
    foreach ($cart_object->cart_contents as $key => $value) 
    { 
     if($woo_ver < "3.0.0" && $woo_ver < "2.7.0") 
     { 
      $value['data']->price = $custom_price; 
     } 
     else 
     { 
      $value['data']->set_price($custom_price); 
     } 
    }    
} 

Vielen Dank

3

Für die Wordpress und WooCommerce neueste Version, verwenden Sie bitte wie diese

add_action('woocommerce_before_calculate_totals', 'add_custom_price'); 

function add_custom_price($cart_object) { 
    foreach ($cart_object->cart_contents as $key => $value) { 
     $custom_price = 5; 
     $value['data']->set_price($custom_price); 
    } 
} 
Verwandte Themen