【问题标题】:Woocommerce: give user access to downloadable files when the status is on-holdWoocommerce:当状态为搁置时,允许用户访问可下载的文件
【发布时间】:2016-06-21 07:36:06
【问题描述】:

问:我想让我的客户在其订单状态为“暂停”时访问可下载的产品。

当客户订购可下载产品和实际产品时,我有时希望将订单置于搁置状态(手动)。但是客户无法下载可下载的产品。

授权访问在 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);

【问题讨论】:

  • 因此您也可以手动授予下载权限
  • 亲爱的 Mujeebu Rahman 我不明白你的意思。据我所知,Woocommerce 中没有为每个订单状态设置选项,或者客户可以(或不能)下载电子书。或者你知道我可以在哪里更改设置吗?
  • 我明白你的意思。但我需要的是不同的东西。此“授予访问权限”仅在订单状态为“处理中”或“已完成”时有效。我想在状态为“暂停”时授予客户访问权限。
  • 即使订单处于搁置状态,您也可以设置授予访问权限

标签: php wordpress woocommerce customer


【解决方案1】:

有一种更简单的方法可以做到这一点,我刚刚联系了 Woocommerce 支持,在 Woocommerce > 设置 > 产品 > 可下载产品中有一个名为“付款后授予对可下载产品的访问权限”的框,允许用户访问他们的购买后可下载的产品。

【讨论】:

    猜你喜欢
    • 2017-07-28
    • 1970-01-01
    • 1970-01-01
    • 2020-06-04
    • 2010-10-15
    • 2013-03-15
    • 1970-01-01
    • 1970-01-01
    • 2021-06-17
    相关资源
    最近更新 更多