it-swarm.com.de

WooCommerce: Produkt mit Preisüberschreibung in den Warenkorb legen?

$replace_order = new WC_Cart();
$replace_order->empty_cart( true );
$replace_order->add_to_cart( "256", "1");

Der obige Code fügt das Produkt 256 zur Cart 1-Zeit hinzu. Aber das Problem, das ich habe, ist, dass ich in der Lage sein möchte, den Produktpreis komplett außer Kraft zu setzen. Soweit ich das beurteilen kann, kann ich nur einen Coupon in den Warenkorb legen.

Gibt es eine Möglichkeit, den Preis auf etwas völlig Gewohnheit zu überschreiben?

34
dcolumbus

Hier ist der Code zum Überschreiben des Produktpreises im 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);
    }
}

Hoffe es wird nützlich sein ...

50

Sie müssen eine if-Anweisung zur Überprüfung der Produkt-ID im obigen Code einführen:

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;
        }
        */
    }
}

Fügen Sie diesen Code an einer beliebigen Stelle hinzu und stellen Sie sicher, dass dieser Code immer ausführbar ist.

Nach dem Hinzufügen dieses Codes, wenn Sie anrufen:

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

Nur dieses Produkt wird mit dem überschriebenen Preis hinzugefügt. Andere, dem Warenkorb hinzugefügte Produkte werden ignoriert, da der Preis außer Kraft gesetzt wird.

Hoffe das wird hilfreich sein.

43

Ich habe alle obigen Codebeispiele ausprobiert und neueste Woocommerce 3.0 unterstützt keines der obigen Beispiele. Verwenden Sie den folgenden Code und arbeiten Sie 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);   
    }
}
11
Saran

Nach der Veröffentlichung von Woocommerce Version 3.0.0 wird der Produktpreis aktualisiert, indem die Funktion set_price ($ price) in den Warenkorb gelegt wird. Das Beispiel ist wie folgt:

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);
       }
   }            
}

Danke vielmals

6
Mohd Jafar

Für die neueste Version von Wordpress und Woocommerce verwenden Sie diese bitte

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); 
    }
}
3
sumon cse-sust

Um es dynamisch zu machen (den Preis für jeden Artikel im Warenkorb separat zu überschreiben), müssen Sie den Preis des überschriebenen Produkts in der Sitzung mit dem Warenkorb-Artikelschlüssel als Sitzungsschlüssel speichern, indem Sie woocommerce_add_to_cart hook verwenden.

wenn Sie diese Sitzungswerte verwenden, können Sie den korrekten Warenkorbwert berechnen und den geänderten Preis auch in der Bestellposition anzeigen lassen

1
Sark

Mit WooCommerce 2.5 habe ich festgestellt, dass dies ein zweiteiliger Prozess ist. Der erste Schritt besteht darin, die Laufzeitanzeige der Preise zu ändern, wenn sie über den Filter woocommerce_add_cart_item in den Warenkorb gelegt wird. Der zweite Teil besteht darin, die persistenten Sitzungsdaten festzulegen, die beim Auschecken über den Filter woocommerce_get_cart_item_from_session gelesen werden. Dies scheint schneller zu sein als das Filtern der Berechnungssummenfilter (z. B. woocommerce_before_calculate_totals), da sie in WooCommerce sehr häufig ausgeführt werden. 

Weitere Details hier: woocommerce Preis ändern, während in den Warenkorb gelegt werden

1
Lance Cleveland

Für jeden, der von Google hierher gekommen ist. Das oben genannte ist nun veraltet, da ich herausgefunden habe, dass es auf WooCommerce 3.0.1 aktualisiert wurde.

Anstelle der obigen Angaben müssen Sie jetzt set_price anstelle von price verwenden.

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 das hilft den Leuten in der Zukunft :)

1
danyo

add_filter ('woocommerce_cart_item_price', 'kd_custom_price_message');

funktion kd_custom_price_message ($ price) {

    $textafter = ' USD'; 
    return $price . $textafter;

}

0
shrddha patel

So habe ich es gemacht. Zuerst addiere ich meinen benutzerdefinierten Preis zu cart_item_data, der benutzerdefinierte Daten in den Warenkorb speichern kann. Dann verwende ich woocommerce_before_calculate_totals, schleife den Warenkorb und addiere den zuvor hinzugefügten 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'];
    }
}
0
tobros91