WooCommerce - Adăugarea programatică a unui produs în coș prin JS sau PHP

25 mai 2012, 16:44:28
Vizualizări: 125K
Voturi: 38

Folosesc plugin-ul WooCommerce pentru a facilita o mică parte de e-commerce a unui site și am nevoie să adaug produse în coș prin intermediul unei comenzi sau funcții, în loc să folosesc butoanele proprii 'add-to-cart'.

Prin aceasta, mă refer practic la trimiterea către WooCommerce a unui SKU și a unei cantități, de exemplu, și actualizarea coșului.

sendToCart('123456', 55);

etc

Am căutat prin documentație și nu am reușit să găsesc o referință pentru acest tip de funcționalitate. Poate cineva să sugereze cum aș putea realiza acest lucru?

10
Comentarii

Închis-votat ca prea localizat. Ai încercat suportul WooThemes?

Chip Bennett Chip Bennett
25 mai 2012 17:04:28

@Chip Bennett Da, am încercat, dar ei cer 125 de dolari doar pentru a te înscrie, din păcate. Această problemă se încadrează atât în WordPress cât și în Woocommerce - care este o etichetă validă aici, deci ar trebui să fie validă, nu? Sau poate înțeleg greșit termenul 'prea localizat'?

Larry B Larry B
25 mai 2012 17:21:15

Această întrebare nu are nicio legătură cu WordPress în mod specific. Ea implică doar pluginul WooCommerce în sine - funcționalitatea pluginului și funcțiile/codul personalizat al pluginului. Aș fi putut închide-vota ca off-topic, dar de obicei folosesc prea localizat pentru întrebări despre produse comerciale sau produse care au opțiuni de suport comercial.

Chip Bennett Chip Bennett
25 mai 2012 17:27:21

@ChipBennett WooCommerce este doar pentru WordPress, așa că pare ciudat să fie categorisit ca neavând nicio legătură cu WordPress. Cum s-ar putea folosi eticheta WooCommerce dacă nu pentru a posta o întrebare despre WooCommerce? În orice caz, am găsit răspunsul pe care îl voi posta acum în caz că altcineva are aceeași problemă.

Larry B Larry B
25 mai 2012 17:46:28

Nu am spus că WooCommerce nu are nicio legătură cu WordPress, ci mai degrabă că întrebarea ta specifică nu are nicio legătură cu WordPress. Diferența dintre cele două este crucială.

Chip Bennett Chip Bennett
25 mai 2012 17:47:49

@ChipBennett Ei bine, aș fi nevoit să nu fiu de acord. De ce există o etichetă WooCommerce dacă nu pentru a pune întrebări despre WooCommerce. WooCommerce nu este un produs independent în niciun fel, așa că orice legat de WooCommerce este relevant pentru WordPress. Dar asta este doar părerea mea, desigur.

Larry B Larry B
25 mai 2012 17:57:07

Vă rugăm să citiți FAQ-ul privind domeniul de aplicare al întrebărilor pentru WPSE: "Rețineți că noi nu tratăm întrebări... care nu sunt specifice WordPress (chiar dacă apar în contextul său)." Doar pentru că WooCommerce rulează în contextul WordPress nu înseamnă că fiecare întrebare despre WooCommerce este în domeniul de aplicare al WPSE.

Chip Bennett Chip Bennett
25 mai 2012 18:03:05

Vă rugăm să postați răspunsurile ca răspunsuri, nu ca modificări ale întrebării originale. Vă rugăm să citiți FAQ-ul pentru a înțelege cum funcționează site-urile de întrebări și răspunsuri StackExchange.

Chip Bennett Chip Bennett
25 mai 2012 18:18:33

Trebuie să aștept 8 ore deoarece reputația mea este sub 10, așa că voi face asta mai târziu.

Larry B Larry B
25 mai 2012 18:56:01

@GHarping Mulțumesc că ai pus această întrebare, chiar dacă ai primit o grămadă de critici pentru asta. :)

Ryan Ryan
9 ian. 2013 06:42:35
Arată celelalte 5 comentarii
Toate răspunsurile la întrebare 2
2
37

OK, deci iată cum am rezolvat-o în final. Un exemplu rapid și simplu, care folosește jQuery.

<a id="buy" href="#">Cumpără asta!</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() {
             // callback
          });
       }
    </script>

Acest cod face pur și simplu o cerere AJAX GET către URL-ul coșului

/wp/?post_type=product&add-to-cart=[ID_PRODUS]
28 mai 2012 18:54:28
Comentarii

acest lucru nu mai funcționează (wc v2.1.12). am găsit o soluție și am împărtășit-o aici

honk31 honk31
28 aug. 2014 12:15:58

Am folosit acest tutorial care m-a ajutat să obțin ceea ce aveam nevoie: https://wpharvest.com/add-product-to-cart-programmatically-in-woocommerce/

Dragos Micu Dragos Micu
22 mar. 2020 15:03:25
2
37

În PHP am reușit să fac asta în felul următor:

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

Metoda se află în woocommerce/classes/class-wc-cart.php:

    /**
     * Adaugă un produs în coș.
     *
     * @param string $product_id conține ID-ul produsului de adăugat în coș
     * @param string $quantity conține cantitatea articolului de adăugat
     * @param int $variation_id
     * @param array $variation valori ale atributelor
     * @param array $cart_item_data date suplimentare pentru articolul din coș pe care dorim să le transmitem
     * @return bool
     */
    public function add_to_cart( $product_id, $quantity = 1, $variation_id = '', $variation = '', $cart_item_data = array() ) {
30 aug. 2013 14:41:34
Comentarii

Cum aș putea apela acea metodă prin ajax?

Luca Reghellin Luca Reghellin
11 dec. 2013 21:21:23

@Stratboy folosind metoda recomandată de adăugare a funcțiilor AJAX în WordPress: https://codex.wordpress.org/AJAX_in_Plugins - practic, doar inserezi cele 3 linii din răspuns în primul exemplu PHP din codex-ul WordPress.

CodeBrauer CodeBrauer
14 nov. 2016 18:45:40