我试图自动更改Woocommerce订单“失败”状态为“取消”状态后24小时.这意味着客户还没有能够支付他的订单.
到目前为止,我已经尝试了很多东西,但无法使其工作。下面是我创建的mu-plugin:
<?php
add_action( 'woocommerce_cancel_unpaid_submitted', 'cancel_failed_orders' );
function cancel_failed_orders() {
$days_delay = 1;
$one_day = 24 * 60 * 60;
$today = strtotime( date('Y-m-d') );
$failed_orders = (array) wc_get_orders( array(
'limit' => -1,
'status' => 'wc-failed',
'date_created' => '<' . ( $today - ($days_delay * $one_day) ),
) );
if ( sizeof($failed_orders) > 0 ) {
$cancelled_text = __("No successful payment", "woocommerce");
foreach ( $failed_orders as $order ) {
$order->update_status( 'wc-cancelled', $cancelled_text );
}
}
}
有人知道我错过了什么吗?
2条答案
按热度按时间vc9ivgsu1#
看起来“woocommerce_cancel_unpaid_submitted”操作不存在。您可以使用“woocommerce_cancel_unpaid_orders”操作。
lndjwyie2#
这里是一个解决方案与wp-cron作业.要测试它在完全安装WP Crontrol插件,这样你就可以手动运行cron作业时,你需要它或等待1小时.你的cron作业应列为名称failed_orders_event .
禁用wp-cron和使用服务器cron,如果你想执行每小时有或没有游客。有很多信息在网上。