/**
  * Registers additional field filters unless the additional field data is not ready/still
  * in need of an update.
  *
  * @return bool
  */
 protected static function register_filters()
 {
     if (!self::additional_fields_ready()) {
         return false;
     }
     foreach ((array) tribe_get_option('custom-fields', array()) as $field) {
         /**
          * Controls whether a filter is created or not for a particular additional field.
          *
          * @var bool  $create  create a filter object for this additional field
          * @var array $field   additional field definition
          */
         if (!apply_filters('tribe_events_filter_create_additional_field_filter', true, $field)) {
             continue;
         }
         /**
          * Controls the title used for an additional field filter.
          *
          * @var string $label  default title for the additional field filter
          * @var array  $field  additional field definition
          */
         $title = apply_filters('tribe_events_filter_additional_field_title', $field['label'], $field);
         /**
          * Controls the slug used for an additional field filter. This should generally be
          * unique or else unexpected results could be returned when users apply the filter.
          *
          * @var string $slug   default slug for the additional field filter
          * @var array  $field  additional field definition
          */
         $slug = apply_filters('tribe_events_filter_additional_field_slug', $field['name'], $field);
         // For multichoice fields we need an extra leading underscore for our meta queries
         $meta_key = Tribe__Events__Pro__Custom_Meta::is_multichoice($field) ? '_' . $field['name'] : $field['name'];
         self::$filters[$meta_key] = new Tribe__Events__Filterbar__Filters__Additional_Field($title, $slug, $meta_key);
     }
     return true;
 }
 /**
  * Provides a list of all currently defined (ECP) custom fields which are "multichoice"
  * in nature (for example, checkbox-type fields would be included in this list by default).
  *
  * @return array
  */
 public function multichoice_fields()
 {
     $multichoice_fields = array();
     $defined_fields = (array) tribe_get_option('custom-fields', array());
     foreach ($defined_fields as $custom_field) {
         if (Tribe__Events__Pro__Custom_Meta::is_multichoice($custom_field['type'])) {
             $multichoice_fields[] = $custom_field;
         }
     }
     return $multichoice_fields;
 }