Schedule posts in WordPress not working properly

I’ve got this script in PHP to schedule my posts. I don’t see an error with this code. Can you help me? It should schedule all drafts in future, but it’s publishing it at once right now.

<?php
// Wczytanie środowiska WordPress
require_once('wp-load.php');

// Parametry
$min_posts_per_day = 1;  // Minimalna liczba postów na dzień
$max_posts_per_day = 5;  // Maksymalna liczba postów na dzień
$start_hour = 10;        // Najwcześniejsza godzina publikacji
$end_hour = 18;          // Najpóźniejsza godzina publikacji
$total_posts = 137;      // Liczba postów do zaplanowania
$end_date = strtotime('2024-11-01'); // Ostateczna data zakończenia publikacji

// Pobierz aktualną strefę czasową z ustawień WordPressa
$timezone_string = get_option('timezone_string');
if (!$timezone_string) {
    $timezone_string = 'UTC'; // Jeśli nie ustawiono strefy czasowej, użyj UTC
}
$timezone = new DateTimeZone($timezone_string);
$start_date = new DateTime('2024-08-15', $timezone);

// Pobierz wszystkie szkice postów
$args = array(
    'post_type'      => 'post',
    'post_status'    => 'draft',    // Tylko szkice
    'posts_per_page' => $total_posts
);
$draft_posts = get_posts($args);

if ($draft_posts) {
    $scheduled_posts = 0;
    $current_date = clone $start_date;

    while ($scheduled_posts < $total_posts && $current_date->getTimestamp() <= $end_date) {
        // Losowa liczba postów na dzień (od 1 do 5)
        $posts_per_day = rand($min_posts_per_day, $max_posts_per_day);

        // Ustawienie nowej daty publikacji dla każdego postu
        for ($i = 0; $i < $posts_per_day && $scheduled_posts < $total_posts; $i++) {
            // Losowa godzina publikacji
            $random_hour = rand($start_hour, $end_hour);
            $random_minute = rand(0, 59);
            
            // Ustawienie godziny publikacji
            $current_date->setTime($random_hour, $random_minute);

            // Sprawdzenie, czy nowa data jest późniejsza niż aktualna data i czas
            if ($current_date->getTimestamp() > time()) {
                // Ustawienie daty publikacji i statusu postu
                $post_data = array(
                    'ID'            => $draft_posts[$scheduled_posts]->ID,
                    'post_date'     => $current_date->format('Y-m-d H:i:s'),
                    'post_date_gmt' => get_gmt_from_date($current_date->format('Y-m-d H:i:s')),
                    'post_status'   => 'future',  // Ustawienie statusu na zaplanowany
                );

                // Aktualizacja postu w bazie danych
                wp_update_post($post_data);

                $scheduled_posts++;
            }
        }

        // Przesunięcie daty o losową liczbę dni (od 1 do 5) po zaplanowaniu wszystkich postów na dany dzień
        $days_to_add = rand(1, 5);
        $current_date->modify("+{$days_to_add} days");
    }
    echo 'Daty publikacji postów zostały zmienione.';
} else {
    echo 'Brak szkiców postów do zaplanowania.';
}
?>

And it’s publishing all drafts, without planning posts without schedule it. Where is the problem? Do you see it?