2017-04-03 206 views
0

我正在一個網上商店測試案例,我想要的是自動添加項目/產品的訪問購物車。所以當我在世界各地找到相同的代碼時,我搜索了類似的東西。自動添加多個產品到訪問購物車WooCommerce

/* 
* goes in theme functions.php or a custom plugin 
**/ 
// add item to cart on visit 
add_action('template_redirect', 'add_product_to_cart'); 
function add_product_to_cart() { 
    if (! is_admin()) { 
     $product_id = 64; 
     $found = false; 
     //check if product already in cart 
     if (sizeof(WC()->cart->get_cart()) > 0) { 
      foreach (WC()->cart->get_cart() as $cart_item_key => $values) { 
       $_product = $values['data']; 
       if ($_product->id == $product_id) 
        $found = true; 
      } 
      // if product not found, add it 
      if (! $found) 
       WC()->cart->add_to_cart($product_id); 
     } else { 
      // if no products in cart, add it 
      WC()->cart->add_to_cart($product_id); 
     } 
    } 
} 

來源:

https://docs.woocommerce.com/document/automatically-add-product-to-cart-on-visit/ https://gist.github.com/kloon/2376300

所以,如果你只有一個產品,但是我想補充的不僅僅是1個產品更多能正常工作。有人有一些PHP知識(和一些WordPress)可以幫助我嗎?提前致謝!

回答

2

實際上有兩種方法可以做到這一點,至少。你可以多次調用add_to_cart函數,或者創建一個循環。這兩種方法都到這裏:

方法1

add_action('template_redirect', 'add_product_to_cart'); 
function add_product_to_cart() { 
    if (! is_admin()) { 
     $product_id = 64; 
     $found = false; 
     //check if product already in cart 
     if (sizeof(WC()->cart->get_cart()) > 0) { 
      foreach (WC()->cart->get_cart() as $cart_item_key => $values) { 
       $_product = $values['data']; 
       if ($_product->id == $product_id) 
        $found = true; 
      } 
      // if product not found, add it 
      if (! $found) 
       WC()->cart->add_to_cart($product_id); 
     } else { 
      // if no products in cart, add it 
      WC()->cart->add_to_cart($product_id); 
      WC()->cart->add_to_cart($product_id2); 
      WC()->cart->add_to_cart($product_id3); 
      WC()->cart->add_to_cart($product_id4); 
     } 
    } 
} 

方法2

foreach ($articles as $article) { 
    WC()->cart->add_to_cart($article); 
} 

請注意,您應該創建一個新的陣列稱爲articles保存所有從標識期望的產品。另一件會讓你感到困擾的事情是檢查購物車是否放置超過0個物品,並檢查它們是否全部放在那裏。

方法2將是這個樣子:

add_action('template_redirect', 'add_product_to_cart'); 
function add_product_to_cart() { 
    if (! is_admin()) { 
     $articles = array(64); 
     $found = false; 

     // check if product already in cart 
     if (sizeof(WC()->cart->get_cart()) > 0) { 
      foreach (WC()->cart->get_cart() as $cart_item_key => $values) { 
       $_product = $values['data']; 

       if (($key = array_search($_product->id, $articles)) !== false) 
        unset($articles[$key]); 
      } 

      // if product not found, add it 
      if (count($articles) > 0) { 
       foreach ($articles as $article) { 
        WC()->cart->add_to_cart($article); 
       } 
      } 
     } else { 
      // if no products in cart, add it 
      foreach ($articles as $article) { 
       WC()->cart->add_to_cart($article); 
      } 
     } 
    } 
} 
相關問題