Finally I solved it by creating a custom paginator of my collection, Maybe this is not the best way, I couldn't find a shorter solution, anyway my code works fine now.
use Illuminate\Pagination\LengthAwarePaginator;
protected $perPage = 5;
$posts = Post::get()->filter(function($item) use (&$pYear){
return Persian::jDate(...) == $pYear;
})->sortByDesc('id');
//this code simulates: ->paginate(5)
$posts = new LengthAwarePaginator(
$posts->slice((LengthAwarePaginator::resolveCurrentPage() *
$this->perPage)-$this->perPage,
$this->perPage)->all(), count($posts),
$this->perPage, null, ['path' => '']);