2016-07-24 3 views
0

Мне интересно, знает ли кто-нибудь о способах применения разрешений на скачивание для заказов навалом в WooCommerce. Например:Применить разрешение на загрузку для клиентов в Bulk in WooCommerce

Предположим, у меня есть 100 заказов. У всех есть разрешение на «Продукт А.» Тем не менее, я создал новый продукт и хочу, чтобы у них было разрешение на это, мы назовем этот «Продукт Б.» Есть ли сценарий, функция и т. Д., Чтобы применить разрешение к массиву идентификаторов заказов к новому загружаемому продукту?

Я просмотрел wc_downloadable_product_permissions, который выглядит многообещающим, но недостаточно аргументов, чтобы я мог выполнить это. Любая помощь/направление будут оценены!

+0

Идея: вместо того, чтобы напрямую применять разрешения на загрузку на основе продукта, в вашем случае было бы удобнее создавать специальные атрибуты (загружаемые семейства), которые могут обрабатывать разрешения на скачивание для продуктов, в которых они установлены. Таким образом, когда вы добавляете новый продукт, который вы будете ссылаться на один из этих атрибутов, расширяя одновременно разрешения на скачивание ... Это просто идея, теперь получить эту работу - это еще одна вещь ... – LoicTheAztec

+0

Hi @LoicTheAztec благодарит за ваш ответ! В этом случае мне больше нужен инструмент миграции. Я сейчас в процессе преобразования моего простого продукта с загрузкой в ​​переменный продукт с несколькими загрузками. – Blake

ответ

0

Я много искал, но не нашел решения, поочередно вы можете создать новый заказ (создать подарочный заказ с использованием кода) для всех пользователей и по структуре/правилу woocommerce все пользователи могут загрузить этот продукт из моей учетной записи в ссылка для скачивания. Это не лучшее решение, но ваша работа не будет висеть.

EDIT: (Используйте метод ниже) Loop через все заказы и добавить продукт для всех заказов (Вы можете добавить товар в любом порядке, даже после того, как заказ завершен), вы можете добавить продукт, используя код ниже:

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

Это все должно быть в курсе заказов и это все.

Смежные вопросы