Woocommerce - Fügen Sie ein Produkt programmgesteuert über JS oder PHP zum Warenkorb hinzu [geschlossen]

32

Ich verwende das Woocommerce-Plugin, um einen kleinen E-Commerce-Teil einer Website zu vereinfachen, und muss Produkte über einen Aufruf oder eine Funktion in den Warenkorb legen, anstatt eigene Schaltflächen zum Hinzufügen zum Warenkorb zu verwenden.

Damit meine ich im Grunde Woocommerce eine SKU und Menge zum Beispiel senden und den Warenkorb aktualisieren lassen.

sendToCart('123456', 55);

etc

Ich habe die Dokumentation durchgesehen und kann anscheinend keinen Hinweis auf so etwas finden. Kann jemand vorschlagen, wie ich dies erreichen könnte?

Larry B
quelle
Als zu lokalisiert abgestimmt . Haben Sie versucht, WooThemes zu unterstützen?
Chip Bennett
3
@Chip Bennett Ich habe ja, sie verlangen 125 Dollar, nur um sich leider anzuschließen. Dies fällt in den Bereich von Wordpress und Woocommerce - selbst ein gültiges Tag, also ist es mit Sicherheit gültig? Es sei denn, ich missverstehe "zu lokalisiert"?
Larry B
Diese Frage hat nichts speziell mit WordPress zu tun . Es handelt sich nur um das WooCommerce Plugin selbst - Plugin-Funktionalität und benutzerdefinierte Plugin-Funktionen / Code. Ich hätte als nicht zum Thema gehörend abstimmen können , aber ich verwende normalerweise zu lokalisiert für Fragen zu kommerziellen Produkten oder Produkten mit kommerziellen Supportoptionen.
Chip Bennett
12
@ChipBennett Woocommerce ist nur für Wordpress und scheint daher seltsam zu sein, da es nichts mit Wordpress zu tun hat. Wie würde man das Woocommerce-Tag verwenden, um keine Frage zu Woocommerce zu stellen? Auf jeden Fall habe ich die Antwort gefunden, die ich jetzt posten werde, falls jemand das gleiche Problem hat.
Larry B
11
@GHarping Vielen Dank, dass Sie diese Frage gestellt haben, obwohl Sie eine Menge Mist dafür haben. :)
Ryan

Antworten:

35

OK, also hier ist, wie ich es am Ende gelöst habe. Ein schnelles und unsauberes Beispiel ist JQuery.

<a id="buy" href="#">Buy this!</a>
    <script>    
       $('#buy').click(function(e) {
          e.preventDefault();
          addToCart(19);
          return false;
       });    

       function addToCart(p_id) {
          $.get('/wp/?post_type=product&add-to-cart=' + p_id, function() {
             // call back
          });
       }
    </script>

Dadurch wird nur eine AJAX GET-Anforderung an die Warenkorb-URL gesendet

/wp/?post_type=product&add-to-cart=[PRODUCT_ID]
Larry B
quelle
7
dies funktioniert nicht mehr (wc v2.1.12). fand eine Lösung und teilte es hier
honk31
30

In PHP habe ich es so geschafft:

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

Die Methode befindet sich in woocommerce / classes / class-wc-cart.php:

    /**
     * Add a product to the cart.
     *
     * @param string $product_id contains the id of the product to add to the cart
     * @param string $quantity contains the quantity of the item to add
     * @param int $variation_id
     * @param array $variation attribute values
     * @param array $cart_item_data extra cart item data we want to pass into the item
     * @return bool
     */
    public function add_to_cart( $product_id, $quantity = 1, $variation_id = '', $variation = '', $cart_item_data = array() ) {
jarnoan
quelle
3
Wie könnte ich diese Methode über Ajax aufrufen?
Luca Reghellin
1
@Stratboy mit der empfohlenen Methode zum Hinzufügen von AJAX-Funktionen in Wordpress: codex.wordpress.org/AJAX_in_Plugins - im Grunde fügen Sie einfach die 3 Zeilen aus der Antwort im ersten PHP-Beispiel aus dem Wordpress-Codex ein.
CodeBrauer