私はたくさんのグーグルで解決しましたが、代わりにすべてのユーザーに新しい注文(コードを使用してギフト注文を作成)を作成することができ、woocommerce構造/ルールごとに、ダウンロードリンク。それは最善の解決策ではありませんが、あなたの仕事はハングアップしません。
EDIT:すべての注文を通じて ループ(法の下に使用します)と、すべての注文に製品を追加します(あなたは注文が完了した後でも、任意の順序での製品を追加することができます)、あなたはコードの下に使用して製品を追加することができます。
$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);
を。
アイデア:代わりに、直接製品に基づいて、ダウンロードの権限を適用するので、それは彼らが設定されている製品のダウンロード権限を扱うことができる特別な属性(ダウンロード家族)のようなものを作成するために、あなたのケースでは、より便利である可能性があります。このようにして、この属性の1つにリンクする新しい製品を追加すると同時にダウンロード権限を拡張します...これは単なるアイデアですが、今この作業を行うには別のものです... – LoicTheAztec
こんにちは@LoicTheAztecありがとう応答!この例では、より多くの移行ツールが必要です。私は現在ダウンロードしている私のシンプルな製品を、複数のダウンロードを持つ可変的な製品に変換しています。 – Blake