2016-07-24 57 views
0

我想知道是否有人知道在WooCommerce中批量下载批量订单的方式。例如:在WooCommerce中批量申请下载权限

比方说,我有100个订单。他们都有权“产品A”。但是,我创建了一个新产品,并希望他们也获得相应的许可,我们称之为“产品B”。是否有一个脚本,函数等将一系列订单ID的权限应用于新的可下载产品?

我查看了wc_downloadable_product_permissions,看起来很有希望,但没有足够的参数让我完成这个任务。任何帮助/方向将不胜感激!

+0

一个想法:与其直接应用基于产品的下载权限相比,在您的情况下,创建一种可以处理设置产品的下载权限的特殊属性(可下载系列)可能会更方便。这种方式当你添加一个新的产品,你会链接到这个属性之一,在同一时间下载权限扩展...这只是一个想法,现在得到这个工作是另一回事... – LoicTheAztec

+0

嗨@LoicTheAztec感谢您的响应!在这种情况下,我需要更多的移植工具。我目前正在将我的简单产品下载转换为具有多个下载的可变产品。 – Blake

回答

0

我GOOGLE了很多,但没有发现任何解决方案,交替您可以创建一个新的订单(创建使用代码礼物顺序)为所有用户,并按照woocommerce结构/规则所有用户都可以从我的帐户下载该产品的下下载链接。这不是一个最好的解决方案,但你的工作不会挂起。

编辑:(下面的方法使用) 循环遍历所有的订单和产品到所有订单(您可以为了完成甚至在任何顺序添加产品),你可以用下面的代码添加产品:

$product = wc_get_product($product_id); 
$item = array(
     'order_item_name' => $product->get_title(), 
    ); 
$item_id = wc_add_order_item($order_id, $item); 

然后,你需要添加一些元:

wc_add_order_item_meta($item_id, '_qty', 1); 
    wc_add_order_item_meta($item_id, '_tax_class', $product->get_tax_class()); 
    wc_add_order_item_meta($item_id, '_product_id', $product->id); 
    wc_add_order_item_meta($item_id, '_variation_id', $variation_id); 
    wc_add_order_item_meta($item_id, '_line_subtotal', 0); 
    wc_add_order_item_meta($item_id, '_line_subtotal_tax', ''); 
    wc_add_order_item_meta($item_id, '_line_total', 0); 
    wc_add_order_item_meta($item_id, '_line_tax', ''); 
    wc_add_order_item_meta($item_id, '_line_tax_data', 0); 

最后呼吁:

wc_downloadable_product_permissions($order_id); 

如果您的订单已经下载的产品,那么用户下面的代码在上面的函数的地方:

$order = new WC_Order($order_id); 
if (sizeof($order->get_items()) > 0) 
{ 
    foreach ($order->get_items() as $item) 
    { 
     $_product = $order->get_product_from_item($item); 
     if ($_product && $_product->exists() && $_product->is_downloadable()) 
     { 
      $downloads = $_product->get_files(); 
      foreach (array_keys($downloads) as $download_id) 
      { 
       wc_downloadable_file_permission($download_id, $item['variation_id'] > 0 ? $item['variation_id'] : $item['product_id'], $order, $item['qty']); 
      } 
     } 
    } 
} 
update_post_meta($order_id, '_download_permissions_granted', 1); 

这一切都应该在订单环,就是这样。