以编程方式将产品添加到购物车时出现问题

时间:2016-07-25 13:23:56

标签: php wordpress woocommerce

我对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,但网站崩溃了。

我已经测试了一些,并收到了另一条错误消息:

  

致命错误:允许的内存大小为536870912字节耗尽(尝试过   在1989年的... / wp-includes / taxonomy.php中分配20480字节

似乎只与$woocommerce->cart->add_to_cart($productId);相关。

1 个答案:

答案 0 :(得分: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);
    }
}