我已经搜索并最终找到了运行mysql查询的方法:
DELETE
FROM wp_woocommerce_downloadable_product_permissions
WHERE EXISTS (
SELECT 1 FROM WHERE wp_posts.ID = wp_woocommerce_downloadable_product_permissions.order_id
AND wp_posts.post_status = 'wc-refunded');
从所有退款订单中删除下载权限(wc-refunded
(。
我正在尝试在wc-order-functions.php
中触发此自动https://github.com/woocommerce/woocommerce/blob/master/includes/wc-order-functions.php
这个函数为wc-completed
和wc-processing
订单添加条目权限(在#427
、#428
行找到(,并在默认核心下取消了对wc的删除权限(我在这个函数中没有找到(,我如何将我的mysql查询应用于这个场景,并自动删除所有订单的下载权限,这已经成为wc-cancelled
。我们更好的方法是挂断我们的自动?
在搜索了一些帖子后,我修改了查询以在功能中运行,它的工作原理和阻止下载权限在数字产品订单退款后:
function mysite_refunded($order_id) {
$sql = "DELETE
FROM wp_woocommerce_downloadable_product_permissions
WHERE EXISTS (SELECT 1 FROM wp_posts
WHERE wp_posts.ID = wp_woocommerce_downloadable_product_permissions.order_id AND wp_posts.post_status = 'wc-refunded');";
global $wpdb;
$wpdb->get_results($sql);
}
add_action( 'woocommerce_order_status_refunded', 'mysite_refunded', 10, 1);