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

Как сделать фильтр постов по тегам с помощью выпадающего списка | n-wp.ru
Два способа вывести теги в виде выпадающего списка. Такой список имеет преимущество перед стандартным облаком тегов, если в блоге много меток - он более компактный.
👍 Научим бесплатно правильно создавать сайты на WordPress. Подробнее →

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

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

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

Метки

<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 ); }

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

Создай свой первый сайт на WordPress

tiaurus

Автор n-wp.ru — блога о WordPress для новичков.

Оцените автора
Добавить комментарий

  1. Beetroot

    А можно такое же сделать с рубриками и подрубриками?

    Ответить
  2. Цифровой

    Как-то не очень подробно описано все. Я не хочу просто использовать код, я хочу его понять.

    Ответить
×
WPShop
честная партнерка!

Зарабатывай до 3225₽ с каждой продажи

Подключиться
к партнерке ⟶