gpt4 book ai didi

WooCommerce,如何删除订单的可下载产品许可

转载 作者:行者123 更新时间:2023-12-02 17:18:36 29 4
gpt4 key购买 nike

我想取消下载某些订单文件的权限(即使已经付款),例如如果客户付款被撤销。

我正在摆弄“wc_downloadable_file_permission”,但不知何故这只授予权限,但我想撤销它。

我什至尝试手动处理 wp_posts_meta (_download_permissions_granted:yes/no) 但它没有用。

到目前为止我明白了。

function revoke_download_permission( $order_id ) {    
$order = wc_get_order( $order_id );

if ( sizeof( $order->get_items() ) > 0 ) {
foreach ( $order->get_items() as $item ) {
$product = $item->get_product();

if ( $product && $product->exists() && $product->is_downloadable() ) {
$downloads = $product->get_downloads();

foreach ( array_keys( $downloads ) as $download_id ) {
wc_downloadable_file_permission( $download_id, $product, $order, $item->get_quantity() );
}
}
}
}

最佳答案

截至撰写本文时,Juergen 的解决方案与 WooCommerce 的新数据存储机制不一致。此外,它不会从没有相应顺序的下载权限数据库中删除下载权限。

这里有一个改进的解决方案,用于批量重新生成所有下载权限,它也解决了这些问题。以下与 WooCommerce 中的“重新生成下载权限”命令一致,但它适用于所有已完成的订单。

将其放入您的 functions.php 文件中,加载 wp-admin 页面,然后将其从 functions.php 中删除。

明显的警告:这将在重新生成之前删除您网站的所有下载权限。如果您手动为任何客户分配了任何产品的权限,这些权限将被处理并与您的订单数据库保持一致。使用完全由您自己承担风险,不作任何明示或暗示的保证。

add_action('init','my_activate_download_permissions');
function my_activate_download_permissions() {

$orders = get_posts( array(
'post_type' => 'shop_order',
'post_status' => 'wc-completed',
'posts_per_page' => -1
) );

foreach ( $orders as $order ) {
$data_store = WC_Data_Store::load( 'customer-download' );
$data_store->delete_by_order_id( $order->ID );
wc_downloadable_product_permissions( $order->ID, true );
}
}

关于WooCommerce,如何删除订单的可下载产品许可,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44724410/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com