How can I provided simplified custom exposed filter options for a field in Views?
I've done something very similar to that with the following process:


Implement hook_views_api() in a custom module

function MYMODULE_views_api() {
  return array(
    'api' =&gt; 3,
    'path' =&gt; drupal_get_path('module', 'MYMODULE') . '/includes/views',
  );
}

Create includes/views/views_handler_filter_MYMODULE_country.inc somewhere with code similar to this (the MYMODULE bit isn't necessary, just a bit of low-tech namespacing):

class views_handler_filter_MYMODULE_country extends views_handler_filter_in_operator {

  /**
  * Get value options for the select list.
  */
  function get_value_options() {
    // Replace $this-&gt;value_options with an appropriately filtered list.
    $this-&gt;value_options = function_to_build_filtered_list();
  }

}

Register that file with the autoloader by adding this to MYMODULE.info:

files[] = includes/views/views_handler_filter_MYMODULE_country.inc

Finally, implement hook_field_views_data_alter() to force Views to use your new handler, changing the $field['field_name'] condition (and other similar strings based on field_address) to whatever makes sense for your site

function MYMODULE_field_views_data_alter(&amp;$result, $field, $module) {
  // Limit country exposed filters.
  if ($module == 'addressfield' &amp;&amp; $field['field_name'] == 'field_address') {
    $result['field_data_field_address']['field_address_country']['filter']['handler'] = 'views_handler_filter_MYMODULE_country';
  }
}