Как сделать фильтр постов по тегам с помощью выпадающего списка

Как сделать фильтр постов по тегам с помощью выпадающего списка | n-wp.ru

Для обеспечения полноценной навигации по блогу излюбленными методами являются меню страниц и категорий и облако тегов. Обычно облако тегов помещают в сайдбаре или внизу страницы блога. Однако такая навигация выглядит хорошо, пока облако тегов не очень большое. Когда же блог, существуя несколько лет, обрастет метками (тегами), коих станет так много, что любое облако из них будет нависать как грозовая туча или же туман, становясь больше самого содержимого на странице, то невольно становится актуальным выбор другого, более компактного способа навигации по записям с помощью тегов. Одним из таких методов является организация выпадающего списка тегов.

Как сделать фильтр постов по тегам с помощью выпадающего списка

Для того, чтобы сделать фильтр по тегам в виде выпадающего списка, добавьте в шаблон следующий код:

Метки

<form action="/" method="get">
<?php $select = wp_dropdown_categories('taxonomy=post_tag&show_option_none=Select tag&show_count=1&orderby=name&echo=0'); $select = preg_replace("#]*)>#", "", $select); echo $select; ?>

Откройте файл functions.php, и добавьте в него:

  function dropdown_tag_cloud( $args = '' ) {
     $defaults = array(
         'smallest' => 8, 'largest' => 22, 'unit' => 'pt', 'number' => 45,
         'format' => 'flat', 'orderby' => 'name', 'order' => 'ASC',
         'exclude' => '', 'include' => ''
     );
     $args = wp_parse_args( $args, $defaults );

     $tags = get_tags( array_merge($args, array('orderby' => 'count', 'order' => 'DESC')) ); 

     if ( empty($tags) )
         return;

     $return = dropdown_generate_tag_cloud( $tags, $args ); 
     if ( is_wp_error( $return ) )
         return false;
     else
         echo apply_filters( 'dropdown_tag_cloud', $return, $args );
}

function dropdown_generate_tag_cloud( $tags, $args = '' ) {
     global $wp_rewrite;
     $defaults = array(
         'smallest' => 8, 'largest' => 22, 'unit' => 'pt', 'number' => 255,
         'format' => 'flat', 'orderby' => 'name', 'order' => 'ASC'
     );
     $args = wp_parse_args( $args, $defaults );
     extract($args);

     if ( !$tags )
         return;
     $counts = $tag_links = array();
     foreach ( (array) $tags as $tag ) {
         $counts[$tag->name] = $tag->count;
         $tag_links[$tag->name] = get_tag_link( $tag->term_id );
         if ( is_wp_error( $tag_links[$tag->name] ) )
             return $tag_links[$tag->name];
         $tag_ids[$tag->name] = $tag->term_id;
     }

     $min_count = min($counts);
     $spread = max($counts) - $min_count;
     if ( $spread < = 0 )
         $spread = 1;
     $font_spread = $largest - $smallest;
     if ( $font_spread using_permalinks() ) ? ' rel="tag"' : '';

     foreach ( $counts as $tag => $count ) {
         $tag_id = $tag_ids[$tag];
         $tag_link = clean_url($tag_links[$tag]);
         $tag = str_replace(' ', ' ', wp_specialchars( $tag ));
         $a[] = "t$tag ($count)";
     }

     switch ( $format ) :
     case 'array' :
         $return =& $a;
         break;
     case 'list' :
         $return = "
    nt
  • "; $return .= join("
  • nt
  • ", $a); $return .= "
  • n
n"; break; default : $return = join("n", $a); break; endswitch; return apply_filters( 'dropdown_generate_tag_cloud', $return, $tags, $args ); }

В том месте, где нужно вывести выпадающий список тегов, вставьте:

 
  метки
     

Автор tiaurus 2182 Articles
Являюсь создателем n-wp.ru — блога о WordPress для новичков. Мне интересно многое, поэтому еще я сделал 123-box.ru — блог о программах для Windows, и tiaurus.info — блог о красоте.

2 Комментарии

Оставить комментарий

Ваш электронный адрес не будет опубликован.


*