WooCommerce - Программное добавление товара в корзину через JS или PHP

25 мая 2012 г., 16:44:28
Просмотры: 125K
Голосов: 38

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

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

sendToCart('123456', 55);

и т.д.

Я просмотрел документацию и не могу найти ссылку на что-то подобное. Может кто-нибудь подсказать, как я могу этого достичь?

10
Комментарии

Закрыто с пометкой слишком узконаправленный. Вы уже обращались в поддержку WooThemes?

Chip Bennett Chip Bennett
25 мая 2012 г. 17:04:28

@Chip Bennett Да, обращался, но, к сожалению, они берут $125 только за возможность задать вопрос. Этот вопрос относится и к WordPress, и к Woocommerce — сам по себе это допустимый тег здесь, значит вопрос должен быть уместен? Или я неверно понимаю «слишком узконаправленный»?

Larry B Larry B
25 мая 2012 г. 17:21:15

Этот вопрос не имеет прямого отношения к WordPress. Он касается только самого плагина WooCommerce — его функциональности и пользовательских функций/кода плагина. Я мог бы закрыть его как не по теме, но обычно использую пометку слишком узконаправленный для вопросов о коммерческих продуктах или продуктах, у которых есть платные варианты поддержки.

Chip Bennett Chip Bennett
25 мая 2012 г. 17:27:21

@ChipBennett WooCommerce предназначен только для WordPress, поэтому странно категоризировать его как не связанный с WordPress. Как можно использовать тег WooCommerce, если не для вопросов о WooCommerce? В любом случае, я нашел ответ, который сейчас опубликую на случай, если у кого-то возникнет такая же проблема.

Larry B Larry B
25 мая 2012 г. 17:46:28

Я не говорил, что WooCommerce не имеет отношения к WordPress, а скорее, что ваш конкретный вопрос не имеет отношения к WordPress. Разница между этими двумя утверждениями принципиальна.

Chip Bennett Chip Bennett
25 мая 2012 г. 17:47:49

@ChipBennett Ну, я должен не согласиться. Зачем тогда нужен тег WooCommerce, если не для вопросов о WooCommerce. WooCommerce никоим образом не является самостоятельным продуктом, поэтому все, что связано с WooCommerce, относится к WordPress. Но это, конечно, только мое мнение.

Larry B Larry B
25 мая 2012 г. 17:57:07

Пожалуйста, ознакомьтесь с часто задаваемыми вопросами относительно тематики вопросов на WPSE: "Обратите внимание, что мы не рассматриваем вопросы... не относящиеся к WordPress (даже если они возникают в его контексте)." Тот факт, что WooCommerce работает в контексте WordPress, не означает, что каждый вопрос о WooCommerce входит в тематику WPSE.

Chip Bennett Chip Bennett
25 мая 2012 г. 18:03:05

Пожалуйста, публикуйте ответы как ответы, а не как правки к исходному вопросу. Ознакомьтесь с часто задаваемыми вопросами, чтобы понять, как работают сайты вопросов и ответов StackExchange.

Chip Bennett Chip Bennett
25 мая 2012 г. 18:18:33

Мне нужно подождать 8 часов, так как репутация <10, и тогда я смогу это сделать.

Larry B Larry B
25 мая 2012 г. 18:56:01

@GHarping Спасибо, что задали этот вопрос, хотя вам пришлось столкнуться с кучей негатива. :)

Ryan Ryan
9 янв. 2013 г. 06:42:35
Показать остальные 5 комментариев
Все ответы на вопрос 2
2
37

Итак, вот как я в итоге решил эту проблему. Быстрый и простой пример с использованием jQuery.

<a id="buy" href="#">Купить это!</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>

Этот код просто делает AJAX GET запрос к URL корзины

/wp/?post_type=product&add-to-cart=[ID_ТОВАРА]
28 мая 2012 г. 18:54:28
Комментарии

это больше не работает (wc v2.1.12). нашел решение и поделился им здесь

honk31 honk31
28 авг. 2014 г. 12:15:58

Я использовал этот туториал, который помог мне достичь нужного результата: https://wpharvest.com/add-product-to-cart-programmatically-in-woocommerce/

Dragos Micu Dragos Micu
22 мар. 2020 г. 15:03:25
2
37

В PHP я сделал это следующим способом:

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

Метод находится в woocommerce/classes/class-wc-cart.php:

    /**
     * Добавляет товар в корзину.
     *
     * @param string $product_id содержит ID товара для добавления в корзину
     * @param string $quantity содержит количество добавляемого товара
     * @param int $variation_id
     * @param array $variation значения атрибутов вариации
     * @param array $cart_item_data дополнительные данные элемента корзины
     * @return bool
     */
    public function add_to_cart( $product_id, $quantity = 1, $variation_id = '', $variation = '', $cart_item_data = array() ) {
30 авг. 2013 г. 14:41:34
Комментарии

Как я могу вызвать этот метод через ajax?

Luca Reghellin Luca Reghellin
11 дек. 2013 г. 21:21:23

@Stratboy используя рекомендуемый способ добавления AJAX-функций в WordPress: https://codex.wordpress.org/AJAX_in_Plugins - по сути вам нужно просто вставить 3 строки из ответа в первый php-пример из кодекса WordPress.

CodeBrauer CodeBrauer
14 нояб. 2016 г. 18:45:40