Wordpress - Woocommerce - Add a product to cart programmatically via JS or PHP

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>
       $('#buy').click(function(e) {
          return false;

       function addToCart(p_id) {
          $.get('/wp/?post_type=product&add-to-cart=' + p_id, function() {
             // call back

This just makes an AJAX GET request to the cart url


In PHP I managed to do it this way:

global $woocommerce;

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