• Rozwiązano kostek00

    (@kostek00)


    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.