function getRotatingOrder($items_count = 5) {
    // Başlangıç zamanından bu yana geçen saat sayısını hesapla
    $hours = floor(time() / 3600);
    
    // Rotasyon sayısını hesapla
    $rotation = $hours % $items_count;
    
    // SQL için ORDER BY ifadesini oluştur
    $orderBy = "ORDER BY CASE
        WHEN (id % {$items_count}) = {$rotation} THEN 0
        WHEN (id % {$items_count}) > {$rotation} THEN (id % {$items_count})
        ELSE (id % {$items_count} + {$items_count})
        END ASC, date_added DESC";
        
    return $orderBy;
}
if(isset($post_array["order"]) && $post_array["order"]) {
    $order_by = getRotatingOrder(5, $pri_ord);
} else {
    $order_by = getRotatingOrder(5, $pri_ord);
}
order_way artık gerekli değil çünkü rotasyon mantığı bunu içeriyor

İlan sayısını değiştirmek için de fonksiyonu çağırırken parametre olarak farklı bir sayı verebilirsiniz
$order_by = getRotatingOrder(10); // 10 ilan için rotasyon
Her saat başı otomatik olarak rotasyon gerçekleşir
İlanlar belirttiğiniz şekilde (51234, 45123, ...) sırayla döner