2016-07-25 46 views
0

我不太熟悉wordpress,但是在嘗試以編程方式將產品添加到購物車時遇到了一個奇怪的問題。以編程方式將產品添加到購物車時出現問題

流程是這樣的:
客戶瀏覽產品
客戶可以添加額外的產品,他們的車通過選擇複選框選項
的項目和補充項目應該被添加到購物車中,如果該複選框確認檢查

// product_extra_item_checkbox.php 
add_action('woocommerce_before_add_to_cart_button', 'product_extra_item_checkbox'); 
add_action('woocommerce_add_to_cart', 'add_additional_item_to_cart'); 

function product_extra_item_checkbox() { 
    echo " 
     <input id='_add_additional_item' type='checkbox' class='checkbox add_item' value='1' name='_add_additional_item' /> 
    "; 
} 

function add_additional_item_to_cart() { 
    global $woocommerce; 
    if (isset($_POST['_add_additional_item'])) { 
     $productId = 59; 
     $woocommerce->cart->add_to_cart($productId); 
     echo "<script>alert('ADDED ADDITIONAL PRODUCT TO CART!!!');</script>"; // debug 
    } 
} 

我沒有得到來自Xdebug的話說,調用棧一些投訴已經超過了,所以我想這是有關,但我不能爲我的生命弄清楚爲什麼整個網站崩潰時我只是想做一些以前做過的事情(我發現了WordPress的例子不是我的強項)。

這是我的開發環境的限制,還是我在做一些非常錯誤的事情?

編輯:我在我的開發環境中禁用了xdebug,但網站崩潰了。

我測試過一些,得到了另一條錯誤消息:

Fatal error: Allowed memory size of 536870912 bytes exhausted (tried to allocate 20480 bytes) in .../wp-includes/taxonomy.php on line 1989

似乎只涉及到$woocommerce->cart->add_to_cart($productId);

回答

0

解決方案?

好吧,邏輯錯誤發生了,它實際上只是我自己的愚蠢導致堆棧溢出;)

由於系統持續發射引起的無限循環woocommerce_add_to_cart動作(這是預期的)和$_POST['_add_additional_item']從未清理。

function add_additional_item_to_cart() { 
    global $woocommerce; 
    if (isset($_POST['_add_additional_item'])) { 
     unset($_POST['_add_additional_item']); // this fixed it 
     $productId = 59; 
     $woocommerce->cart->add_to_cart($productId); 
    } 
} 
相關問題