И что именно Вам кажется некрасивым? Вариант рабочий? Работает без ошибок? Вам наверно больше нет работы кроме как «делать красиво» из стандартного алгоритма пагинации. Если Вам уж очень сильно хочется сделать «красиво» можете заменить один из ифов (который просчитывает страницы) на
php.net/manual/en/function.range.php, и фор на implode + array_map. Кода будет меньше, но поверьте, то что у Вас есть сейчас — стандартный код, так пишут почти все, и так проще будет Вам и другим менять его в будуйщем.