query('terms_ids'); return Intexsoft::json($this->getFiltersValues($terms_ids ?? [])); } private function getFiltersValues(array $terms_ids = array()): array { global $wpdb; $available_fields_query = ''; if (empty($terms_ids)) { $available_fields_query = <<get_results($available_fields_query); array_walk($result, static function ($item) { $item->term_id = (int)$item->term_id; $item->parent = (int)$item->parent; }); // Group by taxonomy $filters = []; foreach ($result as $item) { $filters[$item->taxonomy][$item->term_id] = $item; } // Make taxonomy structure as tree foreach ($filters as &$filter) { foreach ($filter as $idx => $term) { if ($term->parent !== 0) { $filter[$term->parent]->terms[] = $term; unset($filter[$idx]); } } $filter = array_values($filter); } return $filters; } }