如何更改 WooCommerce 订单中可下载项目的到期日期?

How can I change the expiration date of downloadable items in WooCommerce orders?

我需要您的帮助,因为我想以编程方式更改 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 - 然后我尝试以这种方式保存它,但没有成功。

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

$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 获取下载。这有点奇怪,但不知何故它起作用了。我能够成功地在我的订单中设置访问权限过期。