1

Q: 注文のステータスが「保留中」のときに、顧客がダウンロード可能な製品にアクセスできるようにしたいと考えています。

顧客がダウンロード可能な製品と物理的な製品を注文するとき、注文を保留状態にしたい場合があります (手作業で)。しかし、その後、顧客はダウンロード可能な製品をダウンロードできません。

許可アクセスは 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' );

これを達成するには、何を変更する必要がありますか?

2016 年 7 月 14 日更新

私を助けてくれたコーダーに支払いました。これは私が探していたコードです。次のコードを 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);
4

1 に答える 1