/** 
  * Makes sure teaser content is built before filters 
  */
 public function pre_build_teasers($content, $panels_data)
 {
     if (empty($this->built_instance)) {
         // First run ?
         $run_init = !empty($panels_data['widgets']) && self::$filter_present === 'init';
         if ($run_init) {
             $instance = [];
             self::$filter_present = false;
             foreach ($panels_data['widgets'] as $key => $widget) {
                 if (!empty($widget['panels_info']['class'])) {
                     // Set filter present ?
                     if (strpos($widget['panels_info']['class'], 'TeaserFilter') === 0) {
                         self::$filter_present = true;
                     }
                     // set filter parent class ?
                     if (!empty($widget['show_filters']) && strpos($widget['panels_info']['class'], 'TeaserListWidget') !== false) {
                         self::$filter_parent_instance = $widget;
                     }
                 }
             }
         }
         // Run build?
         $run_build = self::$filter_present && !empty(self::$filter_parent_instance['panels_info']['class']) && self::$filter_parent_instance['panels_info']['class'] === $this->child_class;
         //  we have teaser list, so build
         if ($run_build) {
             $this->built_instance = $this->build_teasers(self::$filter_parent_instance);
         }
     }
     return $content;
 }
 function initialize()
 {
     parent::initialize();
     $this->settings['proud_teaser_terms']['#description'] = __('Checking a parent category will display all items belonging to the children categories as well', 'wp-proud-core');
 }