Woocommerce - Adicione um produto ao carrinho de forma programática via JS ou PHP [fechado]

32

Estou usando o plug-in Woocommerce para facilitar uma pequena parte do comércio eletrônico de um site e preciso adicionar produtos ao carrinho por meio de alguma chamada ou função, em vez de usar seus próprios botões 'adicionar ao carrinho'.

Com isso, quero dizer basicamente enviar ao Woocommerce um SKU e uma quantidade, por exemplo, e atualizar o carrinho.

sendToCart('123456', 55);

etc

Examinei a documentação e não consigo encontrar uma referência a esse tipo de coisa. Alguém pode sugerir como eu posso conseguir isso?

Larry B
fonte
Votado perto como muito localizado . Você já tentou o suporte do WooThemes?
Chip Bennett
3
@Chip Bennett Eu tenho sim, eles cobram US $ 125 dólares apenas para participar, infelizmente. Isso está dentro do suporte do Wordpress e do Woocommerce - em si uma marca válida aqui, então certamente é válida? A menos que eu esteja entendendo mal 'muito localizado'?
Larry B
Esta pergunta não tem nada a ver com o WordPress especificamente. Envolve apenas o próprio plug-in do WooCommerce - funcionalidade do plug-in e funções / código personalizados do plug-in. Eu poderia ter votado por fechar como off-topic , mas geralmente uso muito localizado para perguntas sobre produtos comerciais ou produtos que têm opções de suporte comercial.
Chip Bennett
12
@ChipBennett Woocommerce é apenas para o Wordpress, então parece estranho categorizar como nada a ver com o wordpress. Como alguém usaria a tag Woocommerce se não postasse uma pergunta sobre Woocommerce? De qualquer forma, encontrei a resposta que devo postar agora, caso outra pessoa tenha o mesmo problema.
Larry B
11
@GHarping Obrigado por fazer esta pergunta, mesmo que você tenha um monte de porcaria por isso. :)
Ryan

Respostas:

35

OK, então aqui está como eu resolvi isso no final. Um exemplo rápido e sujo, 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>

Isso apenas faz uma solicitação AJAX GET para o URL do carrinho

/wp/?post_type=product&add-to-cart=[PRODUCT_ID]
Larry B
fonte
7
isso não está mais funcionando (wc v2.1.12). Encontrei uma solução e a compartilhe aqui
honk31 28/08
30

No PHP, consegui fazer o seguinte:

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

O método está em 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
fonte
3
Como eu poderia chamar esse método via ajax?
Luca Reghellin
1
@ Stratboy usando a maneira recomendada de adicionar funções AJAX no Wordpress: codex.wordpress.org/AJAX_in_Plugins - basicamente, basta inserir as 3 linhas da resposta no primeiro exemplo de php do codex wordpress.
CodeBrauer