2017-04-03 197 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); 
      } 
     } 
    } 
} 
相关问题