Woocommerce - Tambahkan produk ke troli secara terprogram melalui JS atau PHP [ditutup]

32

Saya menggunakan plugin Woocommerce untuk memfasilitasi bagian e-commerce kecil dari sebuah situs dan perlu menambahkan produk ke keranjangnya melalui beberapa panggilan atau fungsi daripada menggunakan tombol 'tambahkan-ke-keranjang' sendiri.

Maksud saya ini, pada dasarnya mengirim Woocommerce SKU dan kuantitas misalnya dan mendapatkan pembaruan keranjang.

sendToCart('123456', 55);

dll

Saya telah melihat dokumentasi dan sepertinya tidak dapat menemukan referensi untuk hal semacam ini. Adakah yang bisa menyarankan bagaimana saya bisa mencapai ini?

Larry B
sumber
Terpilih sebagai terlalu lokal . Sudahkah Anda mencoba dukungan WooThemes?
Chip Bennett
3
@Chip Bennett Saya punya ya, mereka menagih $ 125 dolar hanya untuk bergabung sayangnya. Ini berada di bawah braket Wordpress dan Woocommerce - itu sendiri merupakan tag yang valid di sini, jadi apakah ini benar? Kecuali saya salah paham 'terlalu lokal'?
Larry B
Pertanyaan ini tidak ada hubungannya dengan WordPress secara khusus. Ini hanya melibatkan Plugin WooCommerce itu sendiri - Fungsi plugin dan fungsi / kode Plugin kustom. Saya bisa memilih secara dekat sebagai di luar topik , tetapi saya biasanya menggunakan terlalu lokal untuk pertanyaan tentang produk komersial, atau produk yang memiliki opsi dukungan komersial.
Chip Bennett
12
@ChipBennett Woocommerce hanya untuk Wordpress sehingga tampaknya aneh untuk dikategorikan sebagai tidak ada hubungannya dengan wordpress. Bagaimana orang menggunakan tag Woocommerce jika tidak memposting pertanyaan tentang Woocommerce? Bagaimanapun saya telah menemukan jawaban yang akan saya posting sekarang kalau-kalau ada orang lain yang memiliki masalah yang sama.
Larry B
11
@Garping Terima kasih telah mengajukan pertanyaan ini, meskipun Anda punya banyak omong kosong untuk itu. :)
Ryan

Jawaban:

35

OK jadi inilah cara saya menyelesaikannya pada akhirnya. Contoh cepat dan kotor, menggunakan 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>

Ini hanya membuat permintaan GET AJAX ke url keranjang

/wp/?post_type=product&add-to-cart=[PRODUCT_ID]
Larry B
sumber
7
ini tidak berfungsi lagi (wc v2.1.12). menemukan solusi dan membagikannya di sini
honk31
30

Dalam PHP saya berhasil melakukannya dengan cara ini:

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

Metode ini ada di 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
sumber
3
Bagaimana saya bisa memanggil metode itu melalui ajax?
Luca Reghellin
1
@Stboy dengan menggunakan cara yang disarankan untuk menambahkan fungsi AJAX di Wordpress: codex.wordpress.org/AJAX_in_Plugins - pada dasarnya Anda hanya memasukkan 3 baris dari jawaban dalam contoh php pertama dari codex wordpress.
CodeBrauer