Как очистить корзины пользователей по крону WordPress + WooCommerce?
Есть php код, который должен выполнять две функции:
Изменение статуса заказа на "completed" для всех заказов, которые находятся в статусе "processing". Это делается с помощью функции change_order_status_to_completed(). Эта функция использует WC_Order_Query для получения всех заказов в статусе "processing", а затем обновляет статус каждого заказа на "completed".
Очистка корзины пользователя. Функция 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()