Views exposed pager options
There is no intuitive way to do it, but I found a solution using hook_views_post_execute and hook_form_views_exposed_form_alter:

function MYMODULE_views_post_execute(&amp;$view) {
  if ($view-&gt;name == 'MY-VIEW-NAME') {
    // Regenerate the exposed form after execute the view query
    $exposed_form = $view-&gt;display_handler-&gt;get_plugin('exposed_form');
    $view-&gt;exposed_widgets = $exposed_form-&gt;render_exposed_form(); 
  }
}

function MYMODULE_form_views_exposed_form_alter(&amp;$form, &amp;$form_state) {
  $view = &amp;$form_state['view'];
  if ($view-&gt;name == 'MY-VIEW-NAME') {
    if ($view-&gt;total_rows == 0) {
      // Hide 'results per page' when the view has no results.
      $form['items_per_page']['#access'] = FALSE;
    }
  }
}