WooCommerce - Программное добавление товара в корзину через JS или PHP
Я использую плагин WooCommerce для обеспечения небольшой части электронной коммерции на сайте и мне нужно добавлять товары в корзину через какой-либо вызов или функцию, а не используя собственные кнопки 'добавить в корзину'.
Под этим я подразумеваю отправку в WooCommerce артикула (SKU) и количества, например, чтобы корзина обновилась.
sendToCart('123456', 55);
и т.д.
Я просмотрел документацию и не могу найти ссылку на что-то подобное. Может кто-нибудь подсказать, как я могу этого достичь?

Итак, вот как я в итоге решил эту проблему. Быстрый и простой пример с использованием 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_ТОВАРА]

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

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

В 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() ) {

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