Woocommerce - Dodaj produkt do koszyka programowo przez JS lub PHP [zamknięte]

32

Korzystam z wtyczki Woocommerce, aby ułatwić niewielką część witryny e-commerce i muszę dodawać produkty do koszyka za pomocą połączenia lub funkcji, zamiast używać własnych przycisków „dodaj do koszyka”.

Rozumiem przez to, na przykład, wysłanie Woocommerce na przykład kodu SKU i ilości oraz aktualizację koszyka.

sendToCart('123456', 55);

itp

Przejrzałem dokumentację i nie mogę znaleźć odniesienia do tego rodzaju rzeczy. Czy ktoś może zasugerować, jak mogę to osiągnąć?

Larry B.
źródło
Głosowano za blisko lokalizacji . Czy wypróbowałeś już obsługę WooThemes?
Chip Bennett
3
@Chip Bennett Mam tak, pobierają 125 dolarów, aby niestety dołączyć. Znajduje się to w nawiasach Wordpress i Woocommerce - sam jest tu ważnym tagiem, więc na pewno jest ważny? Chyba że nieporozumienie „zbyt zlokalizowane”?
Larry B,
To pytanie nie ma nic wspólnego z WordPress . Dotyczy tylko samej wtyczki WooCommerce - funkcjonalność wtyczki i niestandardowe funkcje / kod wtyczki. Mogłem głosować z bliska jako nie na temat , ale zwykle używam zbyt zlokalizowanych, aby zadawać pytania dotyczące produktów komercyjnych lub produktów, które mają opcje wsparcia komercyjnego.
Chip Bennett
12
@ChipBennett Woocommerce jest tylko dla Wordpress, więc wydaje się dziwne, że nie ma nic wspólnego z wordpress. Jak użyć tagu Woocommerce, jeśli nie opublikujesz pytania na temat Woocommerce? W każdym razie znalazłem odpowiedź, którą opublikuję teraz na wypadek, gdyby ktoś miał ten sam problem.
Larry B,
11
@GHarping Dziękuję, że zadałeś to pytanie, nawet jeśli masz na to mnóstwo bzdur. :)
Ryan,

Odpowiedzi:

35

OK, więc oto jak to ostatecznie rozwiązałem. Szybki i brudny przykład wykorzystuje 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>

To po prostu powoduje wysłanie żądania AJAX GET do adresu URL koszyka

/wp/?post_type=product&add-to-cart=[PRODUCT_ID]
Larry B.
źródło
7
to już nie działa (wc v2.1.12). znalazł rozwiązanie i udostępnił je tutaj
honk31
30

W PHP udało mi się to zrobić w ten sposób:

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

Metoda znajduje się w woocommerce / klas / 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
źródło
3
Jak mogę wywołać tę metodę za pośrednictwem ajax?
Luca Reghellin,
1
@Stratboy przy użyciu zalecanego sposobu dodawania funkcji AJAX w Wordpress: codex.wordpress.org/AJAX_in_Plugins - w zasadzie wstawiasz 3 wiersze z odpowiedzi w pierwszym przykładzie php z kodeksu wordpress.
CodeBrauer