Как очистить корзины пользователей по крону WordPress + WooCommerce?

Есть php код, который должен выполнять две функции:

  1. Изменение статуса заказа на "completed" для всех заказов, которые находятся в статусе "processing". Это делается с помощью функции change_order_status_to_completed(). Эта функция использует WC_Order_Query для получения всех заказов в статусе "processing", а затем обновляет статус каждого заказа на "completed".

  2. Очистка корзины пользователя. Функция clear_user_cart() получает список всех пользователей с помощью функции get_users() и затем очищает корзину каждого пользователя с помощью WC()->cart->empty_cart().

Обе функции затем регистрируются как крон-задачи с помощью функции wp_schedule_event(). Это означает, что они будут выполняться автоматически каждый день в 1:00.

function change_order_status_to_completed() {
    $orders = wc_get_orders( array(
        'status' => 'processing',
    ) );
    
    foreach ( $orders as $order ) {
        $order->update_status( 'completed' );
    }
}
add_action( 'change_order_status_cron', 'change_order_status_to_completed' );

// Регистрация крон-задачи
if ( ! wp_next_scheduled( 'change_order_status_cron' ) ) {
    $timestamp = strtotime('today 01:00');
    wp_schedule_event( $timestamp, 'daily', 'change_order_status_cron' );
}

function clear_user_cart() {
    $users = get_users();
    
    foreach ( $users as $user ) {
        $user_id = $user->ID;
        $user_cart = WC()->cart->get_cart_for_user( $user_id );
        
        foreach ( $user_cart as $cart_item_key => $cart_item ) {
            WC()->cart->remove_cart_item( $cart_item_key );
        }
    }
}
add_action( 'clear_user_cart_cron', 'clear_user_cart' );

// Регистрация крон-задачи
if ( ! wp_next_scheduled( 'clear_user_cart_cron' ) ) {
    $timestamp = strtotime('today 01:00');
    wp_schedule_event( $timestamp, 'daily', 'clear_user_cart_cron' );
}

В итоге: крон задачи создаются, статусы заказов меняются в указанное время

Но корзины не очищаются!

Подскажите, что не так в функции clear_user_cart()


Ответы (0 шт):