Woocommerce Produkt mehrmals in den Warenkorb legen, aber als unterschiedliche Artikel

Lesezeit: 5 Minuten

Benutzer-Avatar
Tal

Ich habe einen benutzerdefinierten Code, der dem Warenkorb einen Artikel hinzufügt, ein variables Produkt. Wenn ich dasselbe Produkt zweimal hinzufüge, erhöht sich nur die Menge. Ich möchte das Produkt erneut als anderen Artikel in den Warenkorb legen.

Wie würde ich das machen? Der Artikel wird über einen Link wie domain.com?add-to-cart=3434&variation_id=4434 usw. in den Einkaufswagen gelegt.

Das von mir entwickelte System ist ein Produktdesigner. Daher möchte ich vielleicht dasselbe Produkt auswählen, es aber auf unterschiedliche Weise gestalten und dann dieselbe Variante in den Warenkorb legen.

Gibt es auch eine Möglichkeit, eine eindeutige Kennung in der URL zu senden, um diese Elemente aufzuteilen?

Ich möchte es mit add_to_cart tun, aber jedes Mal, wenn ich das mit den Variationsattributen mache, endet der Versand mit einem Fehler, es scheint im Grunde keine Versandmethoden zu finden:

$woocommerce->cart->add_to_cart(522,1, 523,array("attribute_colour" => "colour","attribute_size" => "a3", "attribute_invoice-numbering" => "yes", "attribute_quantity-column" => "yes", "attribute_cc-type" => "duplicate"));

Während dieser Code den Artikel zum Einkaufswagen hinzufügt, bewirkt er Folgendes:

Warnung: Ungültiges Argument für foreach() in /home/****/public_html/wp-content/plugins/woocommerce/includes/class-wc-shipping.php in Zeile 291 angegeben

Es scheint keine verfügbaren Versandmethoden zu geben. Bitte überprüfen Sie Ihre Adresse oder kontaktieren Sie uns, wenn Sie Hilfe benötigen.

Es macht keinen Sinn, da der Standardcode zum Hinzufügen zum Warenkorb in WooCommerce add_to_cart verwendet und keines dieser Probleme hat. Das gleiche, wenn ich eine URL verwende, funktioniert es gut!

Versuche dies !

/*
 * @desc Force individual cart item
 */
function force_individual_cart_items( $cart_item_data, $product_id ){

  $unique_cart_item_key = md5( microtime().rand() );
  $cart_item_data['unique_key'] = $unique_cart_item_key;

  return $cart_item_data;

}

add_filter( 'woocommerce_add_cart_item_data','force_individual_cart_items', 10, 2 );


/*
 * @desc Remove quantity selector in all product type
 */
function remove_all_quantity_fields( $return, $product ) {

    return true;

}

add_filter( 'woocommerce_is_sold_individually', 'remove_all_quantity_fields', 10, 2 );

  • Kann ich in der ersten Funktion eine if-Anweisung hinzufügen, um bestimmte Produkte so einzustellen, dass sie beispielsweise 5 Bestandsmenge wert sind, während alles andere auf 1 gesetzt ist? Es sollte sich nur auf die Bestandsmenge auswirken, nicht auf den Preis (dh es sollte den Preis nicht $i x10 machen).

    – vytfla

    17. März 2016 um 19:00 Uhr


Ich kann noch nicht sagen, ob das Problem mit dem Versandarray damit zusammenhängt. Aber wenn Sie sich den Anfang ansehen add_to_cart() Methode in der Cart-Klasse:

// Generate a ID based on product ID, variation ID, variation data, and other cart item data
$cart_id        = $this->generate_cart_id( $product_id, $variation_id, $variation, $cart_item_data );

// See if this product and its options is already in the cart
$cart_item_key  = $this->find_product_in_cart( $cart_id );

Grundsätzlich sehen wir hier, dass der Artikel absolut einzigartig sein muss, um ihn erneut in den Warenkorb zu legen. Andernfalls wird nur die Menge des Artikels, der sich bereits im Warenkorb befindet, erhöht. Um dies zu umgehen, sollten Sie das machen add_to_cart() Parameter einzigartig … wahrscheinlich über das Finale, $cart_item_data Reihe.

  • Das macht Sinn, das einzige, was ich mich gefragt habe, und im Code ist es ziemlich vage. Die $variation-Variable übernimmt die Attributparameter. $cart_item_data Ich bin mir nicht sicher, was das genau bewirkt? Das Array-Problem und die Aussage, dass es keine Versandmethoden gibt, verwirren mich völlig! Das Produkt wird mit den Variationen perfekt hinzugefügt, aber wir haben keine Versandmethoden und ein Array-Problem. Ein einfaches Produkt verursacht dies jedoch nicht!

    – Glen

    27. Oktober 2014 um 20:36 Uhr

  • Standardmäßig, $cart_item_data nicht tun irgendetwas … es ist für Sie da, um benutzerdefinierte Dinge damit zu machen. Ich denke, dass in Ihrem Fall alles, was das “gestaltete” Produkt einzigartig macht, ein guter Kandidat für die Aufnahme in die ist $cart_item_data Reihe. Im Zusammenhang mit dem Versandproblem … wie ich in Ihrer anderen Frage erwähnt habe, zeigen Sie immer noch nicht genug von Ihrem benutzerdefinierten Code, um das Problem zu diagnostizieren. Zum Beispiel wann (welcher Haken?) rufen Sie das auf add_to_cart Funktion?

    – Helgathewikinger

    27. Oktober 2014 um 20:59 Uhr

  • Ich habe das Problem gefunden. Ich habe in class-wc-shipping.php gegraben und es scheint, dass der Code dort ein wenig blockig ist. Ich habe die Versandfehler weg. Es gab 2 Dinge, die dazu führten, dass die Raten im Paket die ganze Zeit leer zurückkehrten. Ich bin mir nicht sicher, ob das an all meinen Anpassungen liegt, aber ich habe die Woocommerce-Datei gehackt, um dies zu erledigen (muss nicht aktualisiert werden). Zeile 352, === in == geändert, damit if ausgeführt werden kann, andernfalls endete es tot. Dann 375 $Paket[‘rates’] = apply_filters( ‘woocommerce_package_rates’, $package[‘rates’]$package ) – dieser Filter löschte die Raten

    – Glen

    27. Oktober 2014 um 21:12 Uhr

  • Bitte bearbeiten Sie den Kern nicht. Eines Tages möchten Sie vielleicht ein Upgrade durchführen … oder ein anderer Entwickler arbeitet möglicherweise an Ihrem Code und muss ein Upgrade durchführen. Sie würden besser tun, um den Fehler in Ihrem Code zu finden. Damit dies für einen zukünftigen Besucher sinnvoller ist, können wir diese Frage auch auf das Hinzufügen mehrerer Artikel zum Einkaufswagen konzentrieren und Ihre andere Frage zu den fehlenden Paketpreisen behalten?

    – Helgathewikinger

    27. Oktober 2014 um 21:25 Uhr

  • Normalerweise würde ich den Kern nicht bearbeiten. Aber in diesem Fall musste ich. Dies ist kein Fehler in meinem Code, es ist woocommerce. Es hatte auch das gleiche Problem beim Thema 24 mit allen grundlegenden Woocommerce-Einstellungen. Dies wird für dieses spezielle Projekt niemals aktualisiert, daher spielt es keine Rolle. Ich sollte den Fehler vielleicht woo melden. Der Grund, warum der Teil mit === nicht funktionierte, liegt darin, dass die Funktion, die er in if verwendete, einen booleschen Wert zurückgeben sollte, aber einen leeren String und keinen booleschen Wert zurückgab. Es handelt sich also um einen Bug im WooCommerce

    – Glen

    28. Oktober 2014 um 6:59 Uhr


1299350cookie-checkWoocommerce Produkt mehrmals in den Warenkorb legen, aber als unterschiedliche Artikel

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy