Подсчет постов в категориях меню WordPress

Подсчет постов в категориях меню WordPress

количество постов
Использование wp_nav_menu очень облегчает создание меню любой сложности с возможностью редактирование их структуры через админ-страницу. Но у таких меню есть небольшой недостаток, если добавлять в динамическое меню ссылки на категории сайта то в меню не отображается количество постов в категории.
Вывод количества постов у категорий в wp_naw_menu? как сделать?
Все довольно просто, при вставке в шаблоны динамических меню необходимо в качестве аргумента walker указать класс который будет считать у пункта меню с типом category количество постов.
В файл functions.php, расположенный в папке вашей темы, вставьте в самом низу перед ?> следующий код:

// Счетчик постов категорий в меню
  class Count extends Walker_Nav_Menu  {
         function start_el(&$output, $item, $depth, $args) {
          global $wp_query;
          $indent = ( $depth ) ? str_repeat( "t", $depth ) : '';
          $class_names = $value = '';
          $classes = empty( $item->classes ) ? array() : (array) $item->classes;
          $classes = in_array( 'current-menu-item', $classes ) ? array( 'current-menu-item' ) : array();
          $class_names = join( ' ', apply_filters( 'nav_menu_css_class', array_filter( $classes ), $item ) );
          $id = apply_filters( 'nav_menu_item_id', 'menu-item-'. $item->ID, $item, $args );
          $id = strlen( $id ) ? ' id="' . esc_attr( $id ) . '"' : '';
          $output .= $indent . '<li class="'.$item->title.' '.$class_names .'">';
          $attributes  = ! empty( $item->attr_title ) ? ' title="'  . esc_attr( $item->attr_title ) .'"' : '';
          $attributes .= ! empty( $item->target )     ? ' target="' . esc_attr( $item->target     ) .'"' : '';
          $attributes .= ! empty( $item->xfn )        ? ' rel="'    . esc_attr( $item->xfn        ) .'"' : '';
          $attributes .= ! empty( $item->url )        ? ' href="'   . esc_attr( $item->url        ) .'"' : '';
          $item_output = $args->before;
          $item_output .= '<a'. $attributes .'>';
          $countPostsCat='';
          if($item->object == 'category'){
               /*$cat = get_the_category($item->object_id); */
            $cats = get_categories(array('include'=>$item->object_id));
          if($cats[]->count>)
               {
               $countPostsCat='<count>'.$cats[]->count.'</count>';
          }
          }
          $item_output .= $args->link_before . apply_filters( 'the_title', $item->title, $item->ID ) . $args->link_after.$countPostsCat;
          $item_output .= '</a>';
          $item_output .= $args->after;
          $output .= apply_filters( 'walker_nav_menu_start_el', $item_output, $item, $depth, $args );
         }
     }

А в место где должно распологаться меню всавте этот код:

<? wp_nav_menu( array('container'=> '','menu_class' => '', 'menu_id' => '','menu_class'=> 'menu', 'menu_id'=> 'menu','walker'=> new Count()) ); ?>

Вот и все) Желаю удачи.

Читайте также  Карусель изображений jquery. fade effect
Многоуровневое выпадающее меню JQuery, CSS... Бывают случаи, когда клиента не нужно «поражать чрезвычайной анимацией». Ему вполне подойдет простое меню. А что это значит для веб-разработчика? В м...
Карта сайта для WordPress в виде HTML страницы... Карта сайта для людей это обыкновенная html-страница с ссылками на все страницы вашего сайта, которые сгруппированные по категориям, это можно сказа...
Программа для постинга в блог wordpress... Редактор блогов Windows Live (англ. Windows Live Writer) — приложение из пакета основных компонентов Windows, разрабатываемого корпорацией Microsoft, ...
Работаем с типами записей в WordPress 3.0... Одна из самых интересных фишек WordPress 3.0, это индивидуальные типы записей, вы можете добавлять не только Записи и Страницы, но и например Фильмы...

Сохрани, чтобы не потерять