Woocommerce - додайте продукт в кошик програмно через JS або PHP [закрито]


32

Я використовую плагін Woocommerce, щоб полегшити невелику частину електронної комерції сайту, і мені потрібно додавати продукти у свій кошик за допомогою якогось дзвінка чи функції, а не використовувати власні кнопки "додавання в кошик".

Під цим я в основному маю на увазі надіслати Woocommerce, наприклад, номер та кількість, наприклад, оновити кошик.

sendToCart('123456', 55);

тощо

Я переглянув документацію і, здається, не можу знайти посилання на подібні речі. Хтось може підказати, як я можу цього досягти?


Закриті голоси як занадто локалізовані . Ви спробували підтримку WooThemes?
Чіп Беннетт

3
@Chip Bennett У мене так, вони стягують $ 125 доларів, щоб, на жаль, приєднатися. Це підпадає під дужку і Wordpress, і Woocommerce - сам по собі тут дійсний тег, так що, безумовно, діє? Якщо я не розумію "занадто локалізований"?
Ларрі Б

Це питання не має нічого спільного з WordPress . Він включає лише сам плагін WooCommerce - функціональність плагіна та власні функції / код плагіна. Я міг би бути закритим для голосування як поза темою , але я зазвичай використовую занадто локалізовану інформацію для комерційних товарів або продуктів, які мають комерційні варіанти підтримки.
Чіп Беннетт

12
@ChipBennett Woocommerce призначений лише для Wordpress, тому здається дивним для катагоризації, оскільки нічого спільного з wordpress не має. Як можна використовувати тег Woocommerce, якщо не опублікувати питання про Woocommerce? У будь-якому випадку я знайшов відповідь, яку я опублікую зараз, якщо хтось інший має таку ж проблему.
Ларрі Б

11
@GHarping Дякую за те, що ви задали це запитання, навіть якщо у вас є маса лайна за нього. :)
Райан

Відповіді:


35

Добре, ось ось, як я вирішив це врешті-решт. Швидкий і брудний приклад, використовує 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>

Це просто робить запит AJAX GET до URL-кошика

/wp/?post_type=product&add-to-cart=[PRODUCT_ID]

7
це більше не працює (wc v2.1.12). знайшов рішення і поділився ним тут
honk31

30

У PHP мені вдалося це зробити так:

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

Метод в woocommerce / класах / 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() ) {

3
Як я можу викликати цей метод через ajax?
Лука Регеллін

1
@Stratboy, використовуючи рекомендований спосіб додавання AJAX функцій у Wordpress: codex.wordpress.org/AJAX_in_Plugins - в основному ви просто вставляєте 3 рядки з відповіді в перший приклад php з кодексу wordpress.
CodeBrauer
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.