2017-06-23 143 views
0

我想取消下載某些訂單(即使已經付款)的文件的權限,例如,如果客戶付款被撤銷。WooCommerce,如何刪除可下載產品的訂單許可

我擺弄着「wc_downloadable_file_permission」,但不知何故,這只是授予權限,但我想撤銷它。

我甚至試圖手動處理wp_posts_meta(_download_permissions_granted:是/否),但它沒有工作。

到目前爲止,我得到了這個。

function revoke_download_permission($order_id) {  
$order = wc_get_order($order_id); 

if (sizeof($order->get_items()) > 0) { 
    foreach ($order->get_items() as $item) { 
     $product = $item->get_product(); 

     if ($product && $product->exists() && $product->is_downloadable()) { 
      $downloads = $product->get_downloads(); 

      foreach (array_keys($downloads) as $download_id) { 
       wc_downloadable_file_permission($download_id, $product, $order, $item->get_quantity()); 
      } 
     } 
    } 
} 

}

+0

傳遞0而不是$ item-> get_quantity()函數 – Alice

+0

謝謝。但是這並不能撤銷下載權限。這隻會在值downloadsrecmaining = 0的表wp_woocommerce_downloadable_product_permissions中添加額外的記錄。這仍然讓客戶下載文件。我會深入挖掘。 – Juergen

回答

0

我想,我知道了。

而不是完全刪除下載權限,我將剩餘下載的值設置爲零,具有相同的效果。如果客戶付款,您仍然可以將其值恢復爲默認值。

function revoke_download_permission($order_id) { 
    global $wpdb; 
    $order = wc_get_order($order_id); 

    if (sizeof($order->get_items()) > 0) { 
     foreach ($order->get_items() as $item) { 
      $product = $item->get_product(); 

      if ($product && $product->exists() && $product->is_downloadable()) { 
       $downloads = $product->get_downloads(); 

       foreach (array_keys($downloads) as $download_id) { 

        $wpdb->update( 
         'wp_woocommerce_downloadable_product_permissions', 
         array( 
          'downloads_remaining' => '0' 
         ), 
         array('download_id' => $download_id) 
        );      
       } 
      } 
     } 
    } 
} 
相關問題