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

时间:2016-01-28 11:38:22

标签: php wordpress woocommerce

我有一个小的HTML产品选择器,通过网址中的帖子数据传递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);

}

?>

3 个答案:

答案 0 :(得分:0)

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

在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);

答案 1 :(得分:0)

这就是为我解决的问题。

我把这个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;
        }

    });

?>

答案 2 :(得分:-1)

我正在寻找将执行相同操作的代码-允许我使用SKU将多个产品添加到购物车中-因此用户可以将SKU输入文本字段(假设有3个文本输入,他们可以在提交时在每个商品中添加一个SKU,然后将这些商品添加到购物车中。...这是您的吗?您愿意提供完整的代码吗?谢谢你!