2016-01-28 47 views
0

我有一個小的HTML產品選擇器,它通過URL中的發佈數據傳遞Woocommerce sku's。我想用這些SKU將匹配的產品添加到woocommerce購物車。將多個產品添加到Woocommerce籃子腳本

我寫了一個PHP腳本,它坐在我的Wordpress主題目錄中,我認爲它幾乎在那裏,但可以做一些幫助,爲什麼我得到「500服務器錯誤」。如果我刪除了add_to_cart函數並將sku的回顯出來,那麼我可以看到問題出在那裏。我的想法是因爲我在循環之外使用add_to_cart函數?但我不確定。以下是我到目前爲止,如果任何人都可以幫助它將不勝感激。

<?php 

    //get skus 
    $design_sample_ids = $_GET["samples"]; 

    //put skus in array 
    $design_sample_id = explode(";", $design_sample_ids); 

    //loop through skus 
    foreach ($design_sample_id as $sample_id) { 

    //add each sku to cart 
    WC()->cart->add_to_cart($sample_id); 

} 

?> 

回答

0

好的,我拼湊了一個適用於我的解決方案。它可能不是最好的,所以我仍然有興趣看看其他人可以提出什麼。但是在這裏發佈這個以防萬一。

在functions.php文件..

function add_multiple_sku($design_space_sample_skus) { 

    global $woocommerce; 

    //put the skus in an array 
    $design_space_sample_sku = explode(";", $design_space_sample_skus); 

    //loop through array of skus 
    foreach ($design_space_sample_sku as $sample_sku) { 

    //convert skus to product ids 

     $sample_id = wc_get_product_id_by_sku($sample_sku); 

     //add each product id to the cart 

    WC()->cart->add_to_cart($sample_id); 

    } 

    //redirect to the cart 
    $cart_url = $woocommerce->cart->get_cart_url(); 
    wp_safe_redirect($cart_url); 

} 

然後函數調用需要的地方,並使用下面的SKU的拉動。我在我的主題目錄中創建的文件和。 SKU通過發佈數據發佈到此文件。再次,可能不是最好的解決方案。

$parse_uri = explode('wp-content', $_SERVER['SCRIPT_FILENAME']); 
require_once($parse_uri[0] . 'wp-load.php'); 

//add multiple skus 

$design_space_sample_id = $_GET["samples"]; 

add_multiple_sku($design_space_sample_id); 
0

這就是爲我解決的。

我把這個HTML在我的網頁:

<form method="post" action="/"> 

    <input type="hidden" name="E24MT1260" value="23"> 
    <input type="hidden" name="ACFIT60060015" value="14"> 

    <input type="hidden" name="programatic_add_to_cart" value="true"> 
    <input type="submit" value="Add to cart"> 

</form> 

,並將此向我​​的functions.php

<?php 

    add_action('wp_loaded', function() { 
     global $woocommerce; 

     if (!empty($_POST) && !empty($_POST['programatic_add_to_cart'])){ 
      global $woocommerce; 

      foreach ($_POST as $sku => $quantity) { 

       $product_id = wc_get_product_id_by_sku($sku); 
       $woocommerce->cart->add_to_cart($product_id, $quantity); 
      } 

      wp_redirect('/cart'); 
      exit; 
     } 

    }); 

?> 
相關問題