return; } $groups = group_terms($terms); if (count($groups) == 1) { $terms = current($groups); $groups = array(); } else { $terms = array(); foreach ($groups as $group_term_id => $group_terms) { if (count($group_terms) <= ($group_terms[$group_term_id] ? 4 : 3)) { $terms[current($group_terms)] = $group_terms; } } if (count($terms) > 1) { ksort($terms); $terms = my_array_sum($terms); foreach ($groups as $group_term_id => $group_terms) { if (count($group_terms) <= ($group_terms[$group_term_id] ? 4 : 3)) { unset($groups[$group_term_id]); } } } else { $terms = current($terms); if (count($terms) == 1 && $groups[key($terms)]) { unset($groups[key($terms)]); } else { $terms = false; } } foreach ($groups as $group_term_id => $group_terms) { unset($groups[$group_term_id][$group_term_id]);
function group_branches($tree, $branches, $opts) { $groups = array(); foreach ($branches as $term_id => $name) { $terms = array(); if ($tree[$term_id]) { $branch_groups = group_branches($tree, $tree[$term_id], $opts); if ($opts['short']) { foreach ($branch_groups as $group_term_id => $group_terms) { if (count($group_terms) <= ($group_terms[$group_term_id] ? 4 : 3)) { $terms += $group_terms; } } if ($name || count($terms) > 3) { foreach ($branch_groups as $group_term_id => $group_terms) { if (count($group_terms) <= ($group_terms[$group_term_id] ? 4 : 3)) { unset($branch_groups[$group_term_id]); } } } else { $terms = array(); } } else { foreach ($branch_groups as $group_term_id => $group_terms) { if (count($group_terms) <= ($group_terms[$group_term_id] ? 4 : 3)) { $terms[current($group_terms)] = $group_terms; } } if ($name || count($terms) > 1) { ksort($terms); $terms = my_array_sum($terms); foreach ($branch_groups as $group_term_id => $group_terms) { if (count($group_terms) <= ($group_terms[$group_term_id] ? 4 : 3)) { unset($branch_groups[$group_term_id]); } } } else { $terms = current($terms); if (count($terms) == 1 && $branch_groups[key($terms)]) { unset($branch_groups[key($terms)]); } else { $terms = array(); } } } } else { $branch_groups = array(); } switch (true) { case $name: $terms = array($term_id => $name) + $terms; case $terms: $branch_groups = array($term_id => $terms) + $branch_groups; break; default: reset($branch_groups); } $groups[get_term(key($branch_groups), 'products')->name] = $branch_groups; } ksort($groups); return my_array_sum($groups); }