for ($i = 0; ($i < count($query_events)) && ($i < 30); $i++) :
$cur_event_date = get_field('event_date', $query_events[$i]->ID, true);
if ($first_month == date('n', strtotime($cur_event_date))) : ?>
вообще, ощущение, что уже из бд берется не в том порядке, но тебе там виднее)