Woocommerce – Add a product to cart programmatically via JS or PHP

I am using the Woocommerce plugin to facilitate a small e-commerce part of a site and need to add products to its cart via some call or function rather than using its own ‘add-to-cart’ buttons.

By this I basically mean send Woocommerce a SKU and quantity for example and have the cart update.

Read More
sendToCart('123456', 55);

etc

I’ve looked through the documentation and can’t seem to find a reference to this sort of thing. Can anyone suggest how I might achieve this?

Related posts

Leave a Reply

2 comments

  1. OK so here’s how I solved it in the end. A quick and dirty example, uses 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>
    

    This just makes an AJAX GET request to the cart url

    /wp/?post_type=product&add-to-cart=[PRODUCT_ID]
    
  2. In PHP I managed to do it this way:

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

    The method is in 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() ) {