2016-07-24 4 views
0

WooCommerceでオーダーにダウンロード権限を適用する方法を知っている人がいますか?例:WooCommerceでバルクの顧客にダウンロード許可を適用する

私は100の注文があるとしましょう。彼らはすべて「製品A」の許可を得ています。しかし、私は新製品を作って、その製品にも許可を求めています。私たちはこれを「製品B」と呼んでいます。新しいダウンロード可能な製品にオーダーIDの配列に対する許可を適用するスクリプト、関数などがありますか?

私はwc_downloadable_product_permissionsを調べましたが、これは有望ですが、これを達成するのに十分な引数が提供されていません。どんな助けや方向性もありがとう!

+0

アイデア:代わりに、直接製品に基づいて、ダウンロードの権限を適用するので、それは彼らが設定されている製品のダウンロード権限を扱うことができる特別な属性(ダウンロード家族)のようなものを作成するために、あなたのケースでは、より便利である可能性があります。このようにして、この属性の1つにリンクする新しい製品を追加すると同時にダウンロード権限を拡張します...これは単なるアイデアですが、今この作業を行うには別のものです... – LoicTheAztec

+0

こんにちは@LoicTheAztecありがとう応答!この例では、より多くの移行ツールが必要です。私は現在ダウンロードしている私のシンプルな製品を、複数のダウンロードを持つ可変的な製品に変換しています。 – Blake

答えて

0

私はたくさんのグーグルで解決しましたが、代わりにすべてのユーザーに新しい注文(コードを使用してギフト注文を作成)を作成することができ、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); 

を。

関連する問題