【问题标题】:Adding multiple products to Woocommerce basket script将多个产品添加到 Woocommerce 购物篮脚本
【发布时间】: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);

}

?>

【问题讨论】:

    标签: php wordpress woocommerce


    【解决方案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 代码几乎就是这样做的,只是他在表单中使用了隐藏字段,而您的表单将是标准文本字段。
        猜你喜欢
        • 2012-06-30
        • 1970-01-01
        • 1970-01-01
        • 2014-11-21
        • 1970-01-01
        • 2021-08-22
        • 2013-03-10
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多