Я много искал, но не нашел решения, поочередно вы можете создать новый заказ (создать подарочный заказ с использованием кода) для всех пользователей и по структуре/правилу 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);
Это все должно быть в курсе заказов и это все.
Идея: вместо того, чтобы напрямую применять разрешения на загрузку на основе продукта, в вашем случае было бы удобнее создавать специальные атрибуты (загружаемые семейства), которые могут обрабатывать разрешения на скачивание для продуктов, в которых они установлены. Таким образом, когда вы добавляете новый продукт, который вы будете ссылаться на один из этих атрибутов, расширяя одновременно разрешения на скачивание ... Это просто идея, теперь получить эту работу - это еще одна вещь ... – LoicTheAztec
Hi @LoicTheAztec благодарит за ваш ответ! В этом случае мне больше нужен инструмент миграции. Я сейчас в процессе преобразования моего простого продукта с загрузкой в переменный продукт с несколькими загрузками. – Blake