Function X时间过后更改订单状态

Function X时间过后更改订单状态,function,woocommerce,orders,Function,Woocommerce,Orders,四处搜索之后,我只找到了另一个很接近的问题,但没有找到有效的答案 我想在24小时后自动将WooCommerce中的订单状态从完成更改为取消 理想情况下,这只适用于包含虚拟产品的订单 我试过这里给出的答案,但没有成功: 前面的答案代码是否需要在cron作业或类似作业中定期运行?将此代码添加到themes functions.php中 您可以更改天数(如果($int>1)):在本例中:1天 (wp_u)是表_前缀 add_action('init', 'wp_orders'); function

四处搜索之后,我只找到了另一个很接近的问题,但没有找到有效的答案

我想在24小时后自动将WooCommerce中的订单状态从完成更改为取消

理想情况下,这只适用于包含虚拟产品的订单

我试过这里给出的答案,但没有成功:


前面的答案代码是否需要在cron作业或类似作业中定期运行?

将此代码添加到themes functions.php中

您可以更改天数(如果($int>1)):在本例中:1天

(wp_u)是表_前缀

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

    global $wpdb;

$my_query = "SELECT * FROM wp_wc_order_stats where STATUS='wc-processing'";
        $val123 = $wpdb->get_row($my_query, OBJECT);
        $result2 = $wpdb->get_results($my_query);
        foreach ($result2 as $results2) {

            $date1 = $results2->date_created_gmt;
            $order_id = $results2->order_id;

            $date2=date("Y-m-d h:i:s");

$dteStart = new DateTime($date1);
$dteEnd   = new DateTime($date2);
$dteDiff  = $dteStart->diff($dteEnd);
$Diff = $dteDiff->format("%d");
            $int = (int)$Diff;
            if($int>1)
            {
                $order = new WC_Order($order_id);
                if (!empty($order)) {
                    $order->update_status( 'completed' );
                }
            }
        }
}