Kolejność tagów
-
W moim szablonie kolejność tagów jest alfabetycznie, ale w dziwny sposób. Kolejność jest A-Z-A, czyli wyświetla tagi arbuz-banan-ananas. Chcę przerobić to, żeby wyświetlało poprawnie, A-Z.
Jeżeli dobrze zrozumiałem to w poniższym kawałku zmienia się ich kolejność, ale jakkolwiek próbuję, to jedynie zmienia kolejność na co najwyżej Z-A-Z, jak powinienem zmienić, żeby wyświetlało tagi tylko A-Z?
$defaults = array( 'smallest' => 8, 'largest' => 22, 'unit' => 'pt', 'number' => 45, 'format' => 'flat', 'separator' => "\n", 'orderby' => 'name', 'order' => 'ASC', 'exclude' => '', 'include' => '', 'link' => 'view', 'taxonomy' => 'post_tag', 'echo' => true );
Dla pewności daję cały plik z tagami:
<?php /** * @package Warp Theme Framework * @author YOOtheme http://www.yootheme.com * @copyright Copyright (C) YOOtheme GmbH * @license YOOtheme Proprietary Use License (http://www.yootheme.com/license) */ // sort tags if (!function_exists('_count_sort')) { function _count_sort(&$tags) { $tags = array_merge($tags); $sorted_tags = array(); $prefix = 1; for ($i = 0; $i < count($tags); $i++) { $sorted_tags[(int)((count($tags) + ($prefix * $i)) / 2)] = $tags[$i]; $prefix *= -1; } ksort($sorted_tags); $tags = $sorted_tags; } } $taxonomy = (!empty($module->params['taxonomy']) && taxonomy_exists($module->params['taxonomy'])) ? $module->params['taxonomy'] : 'post_tag'; $defaults = array( 'smallest' => 8, 'largest' => 22, 'unit' => 'pt', 'number' => 45, 'format' => 'flat', 'separator' => "\n", 'orderby' => 'name', 'order' => 'ASC', 'exclude' => '', 'include' => '', 'link' => 'view', 'taxonomy' => 'post_tag', 'echo' => true ); $tags = get_terms($taxonomy, array_merge($defaults, array('orderby' => 'count', 'order' => 'DESC'))); if (empty($tags)) return; foreach ($tags as $key => $tag) { $link = get_term_link( intval($tag->term_id), $taxonomy ); if (is_wp_error($link)) return; $tags[ $key ]->link = $link; $tags[ $key ]->id = $tag->term_id; } _count_sort($tags); $counts = array(); $real_counts = array(); // For the alt tag foreach ((array) $tags as $key => $tag) { $real_counts[ $key ] = $tag->count; $counts[ $key ] = round(log10($tag->count + 1) * 100); } $min_count = min( $counts ); $max_count = max( $counts ); $font_span = ($max_count - $min_count) / 100; $font_class_span = (10 - 1) / 100; echo '<ul class="blank tagcloud">'; foreach ( $tags as $key => $tag ) { $count = $counts[ $key ]; $tag_link = '#' != $tag->link ? esc_url( $tag->link ) : '#'; $tag_name = $tags[ $key ]->name; $weight = $font_span ? round(1 + (($count - $min_count) / $font_span) * $font_class_span) : 1; $tag_description = $tag->description; if ($tag_description == '') { echo '<li class="weight'.$weight.'"><a class="chmura" href="'.$tag_link.'">'.$tag_name.'<span>Tag nie ma jeszcze opisu.</span></a> | </li>'; } else { echo '<li class="weight'.$weight.'"><a class="chmura" href="'.$tag_link.'">'.$tag_name.'<span>'.$tag_description.'</span></a> | </li>'; } } echo '</ul>';
Próbowałem pluginów, ale dopóki tutaj nie zmienię zawsze będzie wyświetlać w potrójnej kolejności, np mam 40 tagów, 1-40-1 i co drugi tag jest od końca.
- Temat ‘Kolejność tagów’ jest zamknięty na nowe odpowiedzi.