/** * 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'); }