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

32

Я использую плагин Woocommerce, чтобы облегчить небольшую часть сайта в области электронной коммерции, и мне нужно добавлять товары в корзину с помощью какого-либо вызова или функции, а не использовать собственные кнопки «добавить в корзину».

Под этим я в основном имею в виду, например, отправку Woocommerce SKU и количества и обновление корзины.

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 / 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
источник
3
Как я могу вызвать этот метод через ajax?
Лука Регеллин
1
@Stratboy, используя рекомендуемый способ добавления функций AJAX в Wordpress: codex.wordpress.org/AJAX_in_Plugins - в основном вы просто вставляете 3 строки из ответа в первом примере php из кодекса wordpress.
CodeBrauer