【问题标题】:How can I change the expiration date of downloadable items in WooCommerce orders?如何更改 WooCommerce 订单中可下载项目的到期日期?
【发布时间】:2020-11-27 20:20:01
【问题描述】:

我需要您的帮助,因为我想以编程方式更改 WooCommerce 订单中可下载项目的到期日期。我在这里谈论这个部分:

因此,当客户购买具有可下载项目的产品时,此部分会显示在订单概览中。

不想想用$product->set_download_expiry() 全局更改每个产品的过期时间 - 只是在订单中,或者换句话说,我在订单对象上执行此函数时收到的项目:

$downloadable_items = $order->get_downloadable_items()

我该怎么做?我在文档中还没有找到任何功能...

更新

我已经试过了:

$download = new WC_Customer_Download( 'd595d561-4d37-4d6b-a19e-5ed2f5bc4ed9' );

if ( $download ) {
    $download->set_access_expires( '2022-08-22' );
    $download->save();
    error_log($download->get_access_expires());
}

首先,我遍历了可下载的订单项以获取 id - 然后我尝试以这种方式保存它,但没有成功。

【问题讨论】:

  • 目前,这些字段在订单状态为完成时可见。之后,您可以通过编辑订单设置手动更改此日期,这实际上回答了您的问题。我相信您想自动设置日期吗?以什么方式?在什么基础上?该产品和日期必须满足哪些要求?你能否澄清这一点,以便能够就你的问题给出一个完整的答案,而不是一些指南

标签: php wordpress woocommerce download


【解决方案1】:

我想我找到了正确的方法:

$order                = wc_get_order( 157 );
$data_store           = WC_Data_Store::load( 'customer-download' );
$download_permissions = $data_store->get_downloads(
    [
        'order_id' => $order->get_id()
    ]
);

if ( $download_permissions && count( $download_permissions ) > 0 ) {
    foreach ( $download_permissions as $download ) {
        $download = new WC_Customer_Download( $download->get_id() );
        $download->set_access_expires( '1999-10-05' );
        $download->save();
    }
}

您需要通过下载权限 ID 而不是真正的下载 ID 来获取下载。这有点奇怪,但不知何故它起作用了。我能够成功地在我的订单中设置访问过期。

【讨论】:

    猜你喜欢
    • 2017-11-30
    • 2021-06-20
    • 1970-01-01
    • 2021-06-02
    • 1970-01-01
    • 2020-11-23
    • 2019-04-24
    • 2015-10-23
    • 2020-10-03
    相关资源
    最近更新 更多