it-swarm.com.de

Wordpress. Woocommerce. Aktionshaken VOR dem Hinzufügen zum Warenkorb

Was ich tun muss:Ich möchte ein Produkt überprüfen, bevor es in den Warenkorb gelegt wird. Genauer gesagt: Ich möchte das Produkt, das ich in den Warenkorb legen möchte, mit den bereits hinzugefügten Produkten vergleichen, um festzustellen, ob Konflikte vorliegen. Ein Beispiel: Nehmen wir an, wir haben ein Produkt mit dem Namen "Beide Schuhe" und ein Produkt mit dem Namen "Linker Schuh". Ein Benutzer legt einen "linken Schuh" in den Einkaufswagen. Dann fügt er "beide Schuhe" hinzu. Ich möchte einen Fehler drucken, anstatt "beide Schuhe" hinzuzufügen: Sie können leider nicht beide Schuhe hinzufügen, wenn Sie den linken Schuh in den Warenkorb gelegt haben. Wenn Sie "beide Schuhe" kaufen möchten, entfernen Sie bitte zuerst den "linken Schuh".

Ich habe mir class-wc-cart.php angesehen und einen Aktions-Hook in Zeile811,gefunden, aber es ist zu spät! Es ist, nachdem das Produkt hinzugefügt wurde

"do_action ('woocommerce_add_to_cart', $ cart_item_key, $ product_id, $ quantity, $ variant_id, $ variant, $ cart_item_data);"

Die Methode add_to_cart beginnt in Zeile705. http://wcdocs.woothemes.com/apidocs/source-class-WC_Cart.html#705

Wie kann meine Funktion "Produktkonfliktmanager" vor Zeile 801,verknüpft werden, ohne Woocommerce zu hacken?

Vielen Dank!

14

Ein bisschen zu spät, aber ich denke, Sie suchen nach einer Warenkorbvalidierung, die filterbar ist. Hier ist eine vereinfachte Version:

function so_validate_add_cart_item( $passed, $product_id, $quantity, $variation_id = '', $variations= '' ) {

    // do your validation, if not met switch $passed to false
    if ( 1 != 2 ){
        $passed = false;
        wc_add_notice( __( 'You can not do that', 'textdomain' ), 'error' );
    }
    return $passed;

}
add_filter( 'woocommerce_add_to_cart_validation', 'so_validate_add_cart_item', 10, 5 );
23
helgatheviking

add_filter ('woocommerce_add_to_cart_validation', 'E_coding_hub_only_one_in_cart', 99, 2);

funktion E_coding_hub_only_one_in_cart ($ übergeben, $ hinzugefügt_Produkt_id) {

// zuerst Einkaufswagen leeren: Neuer Artikel ersetzt vorherigen wc_empty_cart ();

// zeige eine Nachricht an, wenn du möchtest

wc_add_notice ("Sorry, aber du kannst nicht beide Schuhe hinzufügen, wenn du den linken Schuh in den Warenkorb gelegt hast", "notice");

return $ failed;

}

0
Shubham Kumar