2016-07-25 51 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); 
    } 
} 
相关问题