将多个产品添加到 Woocommerce 购物篮脚本

Posted

技术标签:

【中文标题】将多个产品添加到 Woocommerce 购物篮脚本【英文标题】:Adding multiple products to Woocommerce basket script 【发布时间】:2016-05-05 18:27:46 【问题描述】:

我有一个小的 html 产品选择器,它通过 URL 中的发布数据传递 Woocommerce sku。我想使用这些 sku 将匹配的产品添加到 woocommerce 购物车。

我已经编写了一个 php 脚本,它位于我的 Wordpress 主题目录中,我认为它几乎就在那里,但对于为什么我收到“500 服务器错误”有一点帮助。如果我删除 add_to_cart 函数并回显出 sku 而不是这样,那么我看到问题就在那里。我的想法是因为我在循环之外使用了 add_to_cart 函数?但我不确定。以下是我到目前为止所拥有的,如果有人可以提供帮助,将不胜感激。

    <?php

  //get skus
  $design_sample_ids = $_GET["samples"];

  //put skus in array
  $design_sample_id = explode(";", $design_sample_ids);

  //loop through skus
  foreach ($design_sample_id as $sample_id) 

    //add each sku to cart
    WC()->cart->add_to_cart($sample_id);



?>

【问题讨论】:

【参考方案1】:

好的,我已经拼凑出一个适合我的解决方案。但是它可能不是最好的,所以我仍然有兴趣看看其他人能想出什么。但是在这里发布它以防它对任何人有帮助。

在functions.php文件中..

    function add_multiple_sku($design_space_sample_skus) 

  global $woocommerce;

  //put the skus in an array
  $design_space_sample_sku = explode(";", $design_space_sample_skus);

  //loop through array of skus
  foreach ($design_space_sample_sku as $sample_sku) 

    //convert skus to product ids

      $sample_id = wc_get_product_id_by_sku( $sample_sku );

      //add each product id to the cart

    WC()->cart->add_to_cart( $sample_id );

  

  //redirect to the cart
  $cart_url = $woocommerce->cart->get_cart_url();
  wp_safe_redirect( $cart_url );


然后函数需要在某个地方调用并且 SKU 的拉入。我在我的主题目录中创建了一个文件并使用了以下内容。 SKU 使用发布数据发布到此文件。同样,可能不是最好的解决方案。

 $parse_uri = explode( 'wp-content', $_SERVER['SCRIPT_FILENAME'] );
require_once( $parse_uri[0] . 'wp-load.php' );

//add multiple skus

$design_space_sample_id = $_GET["samples"];

add_multiple_sku($design_space_sample_id);

【讨论】:

【参考方案2】:

这就是为我解决的问题。

我把这个 HTML 放在我的页面中:

<form method="post" action="/">

    <input type="hidden" name="E24MT1260" value="23">
    <input type="hidden" name="ACFIT60060015" value="14">

    <input type="hidden" name="programatic_add_to_cart" value="true">
    <input type="submit" value="Add to cart">

</form>

并将其添加到我的functions.php中

<?php

    add_action('wp_loaded', function() 
        global $woocommerce;

        if (!empty($_POST) && !empty($_POST['programatic_add_to_cart'])) 
            global $woocommerce;

            foreach ($_POST as $sku => $quantity) 

                $product_id = wc_get_product_id_by_sku($sku);
                $woocommerce->cart->add_to_cart($product_id, $quantity);
            

            wp_redirect( '/cart' );
            exit;
        

    );

?>

【讨论】:

【参考方案3】:

我正在寻找可以做同样事情的代码 -- 允许我使用 SKU 将多个产品添加到购物车 -- 这样用户就可以在文本字段中输入一个 SKU(假设有三个文本输入,他们可以在每个中添加一个 SKU)当他们提交时,它会将这些产品添加到购物车......这是你的吗?你介意提供你的完整代码吗?谢谢你!

【讨论】:

上面的 Marks 代码几乎就是这样做的,只是他在表单中使用了隐藏字段,而您的表单将是标准文本字段。

以上是关于将多个产品添加到 Woocommerce 购物篮脚本的主要内容,如果未能解决你的问题,请参考以下文章

Woocommerce 自定义添加到购物车循环

php 活动门票加 - 当WooCommerce Ticket添加到购物车时,将其他WooCommerce产品添加到购物车

php 活动门票加 - 当WooCommerce Ticket添加到购物车时,将其他WooCommerce产品添加到购物车

除某些 WooCommerce 产品类别外,自动将产品添加到购物车

WooCommerce:使用价格覆盖将产品添加到购物车?

插件:Woocommerce > 如何允许作者将产品添加到购物车