问:我想让我的客户在其订单状态为“暂停”时访问可下载的产品。
当客户订购可下载产品和实际产品时,我有时希望将订单置于搁置状态(手动)。但随后客户无法下载可下载的产品。
授予访问权限在 woocommerce/includes/wc-order-functions.php (2.2) 中进行了规定
/**
* Order Status completed - GIVE DOWNLOADABLE PRODUCT ACCESS TO CUSTOMER.
*
* @access public
* @param int $order_id
*/
function wc_downloadable_product_permissions( $order_id ) {
if ( get_post_meta( $order_id, '_download_permissions_granted', true ) == 1 ) {
return; // Only do this once
}
$order = wc_get_order( $order_id );
if ( $order && $order->has_status( 'processing' ) && get_option( 'woocommerce_downloads_grant_access_after_payment' ) == 'no' ) {
return;
}
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 );
do_action( 'woocommerce_grant_product_download_permissions', $order_id );
}
add_action( 'woocommerce_order_status_completed', 'wc_downloadable_product_permissions' );
add_action( 'woocommerce_order_status_processing', 'wc_downloadable_product_permissions' );
我必须改变什么才能做到这一点?
14-07-2016 更新
我已经支付了一个编码器来帮助我。这是我一直在寻找的代码。将此代码添加到您的functions.php:
function add_onhold_status_to_download_permission($data, $order) {
if ( $order->has_status( 'on-hold' ) ) { return true; }
return $data;
}
add_filter('woocommerce_order_is_download_permitted', 'add_onhold_status_to_download_permission', 10, 2);