2016-07-25 12 views
0

私はワードプレスに精通していませんが、商品をプログラムでカートに追加しようとすると奇妙な問題に直面しています。商品をカートにプログラムで追加する際の問題

の流れはこのようなものです:
お客様は、チェックボックスがある場合はカートに追加されますする必要があり、チェックボックスオプション
アイテムや追加の項目を選択することにより、製品
顧客がカートに追加の製品を追加することができます見て確認が

// 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

解決策?

論理的なエラーが発生し、実際には自分自身の愚かさで、スタックオーバーフローが発生しました;)

システムが起動したために無限ループが発生した(期待される)$_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); 
    } 
} 
関連する問題