2016-07-24 54 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); 

這一切都應該在訂單環,就是這樣。