//$_needed_terms = array_diff($_all_term_ids, $style['selected-excludeterms']); //$_invisible_terms = array_diff($_needed_terms, $style['selected-showterms']); $_close_fieldset = false; $_terms = array(); $visible_terms = array(); ob_start(); foreach ($style['selected-showterms'] as $taxonomy => $terms) { if (is_array($terms)) { $_needed_terms_full = get_terms($taxonomy, array('orderby' => $term_ordering[0], 'order' => $term_ordering[1], 'include' => $terms)); $_needed_terms_full = apply_filters('asp_fontend_get_taxonomy_terms', $_needed_terms_full, $taxonomy, array('orderby' => $term_ordering[0], 'order' => $term_ordering[1], 'include' => $terms)); //var_dump($taxonomy); $_needed_terms_sorted = array(); $needed_terms_flat = array(); if (w_isset_def($style['frontend_term_hierarchy'], 1) == 1) { wd_sort_terms_hierarchicaly($_needed_terms_full, $_needed_terms_sorted); wd_flatten_hierarchical_terms($_needed_terms_sorted, $needed_terms_flat); } else { $needed_terms_flat = $_needed_terms_full; } if ($style['showseparatefilterboxes'] != 0) { $_x_term = get_taxonomies(array("name" => $taxonomy), "objects"); //var_dump($_x_term); if (isset($_x_term[$taxonomy])) { $_tax_name = $_x_term[$taxonomy]->label; } ?> <fieldset> <legend><?php echo asp_icl_t("Taxonomy filter box text", $style['exsearchintaxonomiestext']) . " " . $_tax_name; ?> </legend>
/** * Flattens a hierarchical array of terms into a flat array, marking levels. * Keeps ordering, sets a $cat->level attribute * * @param Array $cats Taxonomy term objects to sort, use get_terms(..) * @param Array $into Target array * @param int $level The current recursion depth */ function wd_flatten_hierarchical_terms(array &$cats, array &$into, $level = 0) { foreach ($cats as $i => $cat) { $cat->level = $level; $into[] = $cat; if (isset($cat->children) && count($cat->children) > 0) { wd_flatten_hierarchical_terms($cat->children, $into, $level + 1); } } // We don't need the children structure foreach ($into as $cat) { unset($cat->children); } }