Woocommerce - Agregue un producto al carrito mediante programación a través de JS o PHP [cerrado]

32

Estoy usando el complemento Woocommerce para facilitar una pequeña parte de comercio electrónico de un sitio y necesito agregar productos a su carrito a través de alguna llamada o función en lugar de usar sus propios botones 'agregar al carrito'.

Con esto básicamente me refiero a enviar a Woocommerce una SKU y cantidad, por ejemplo, y tener la actualización del carrito.

sendToCart('123456', 55);

etc.

He revisado la documentación y parece que no puedo encontrar una referencia a este tipo de cosas. ¿Alguien puede sugerir cómo podría lograr esto?

Larry B
fuente
Voto cerrado como demasiado localizado . ¿Has probado el soporte de WooThemes?
Chip Bennett
3
@Chip Bennett Sí, cobran $ 125 dólares solo para unirse desafortunadamente. Esto se encuentra bajo el soporte de Wordpress y Woocommerce, en sí mismo una etiqueta válida aquí, ¿entonces seguramente es válido? ¿A menos que esté malinterpretando 'demasiado localizado'?
Larry B
Esta pregunta no tiene nada que ver específicamente con WordPress . Se trata solo del complemento WooCommerce en sí mismo: funcionalidad del complemento y funciones / código personalizados del complemento. Podría haber votado de cerca como fuera de tema , pero generalmente uso demasiado localizado para preguntas sobre productos comerciales o productos que tienen opciones de soporte comercial.
Chip Bennett
12
@ChipBennett Woocommerce es solo para Wordpress, por lo que parece extraño catalogarlo como nada que ver con WordPress. ¿Cómo usaría la etiqueta Woocommerce si no fuera para publicar una pregunta sobre Woocommerce? En cualquier caso, he encontrado la respuesta que publicaré ahora en caso de que alguien más tenga el mismo problema.
Larry B
11
@GHarping Gracias por hacer esta pregunta, a pesar de que tienes un montón de basura por ello. :)
Ryan

Respuestas:

35

Bien, así es como lo resolví al final. Un ejemplo rápido y sucio, usa 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>

Esto solo hace una solicitud AJAX GET a la url del carrito

/wp/?post_type=product&add-to-cart=[PRODUCT_ID]
Larry B
fuente
77
esto ya no funciona (wc v2.1.12). encontré una solución y la compartí aquí
honk31
30

En PHP logré hacerlo de esta manera:

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

El método está en 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
fuente
3
¿Cómo podría llamar a ese método a través de ajax?
Luca Reghellin
1
@Stratboy utilizando la forma recomendada de agregar funciones AJAX en Wordpress: codex.wordpress.org/AJAX_in_Plugins : básicamente, simplemente inserta las 3 líneas de la respuesta en el primer ejemplo de php desde el codex de wordpress.
CodeBrauer