Подсчет постов в категориях меню 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()) ); ?>

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

Читайте также  Как сделать аквариум своими руками.
Как вывести первое изображение из записи... Вывод непосредственно первого изображения, если его нет то «заглушку» из списка. Для этого нужно в functions.php дописать: function first_image() { ...
Карта сайта для WordPress в виде HTML страницы... Карта сайта для людей это обыкновенная html-страница с ссылками на все страницы вашего сайта, которые сгруппированные по категориям, это можно сказа...
Многоуровневое выпадающее меню JQuery, CSS... Бывают случаи, когда клиента не нужно «поражать чрезвычайной анимацией». Ему вполне подойдет простое меню. А что это значит для веб-разработчика? В м...
Счетчик просмотров записи по ip адресу в WordPress... Для записи количества просмотров надо в файл functions.php в папке вашего шаблона добавить функцию приведенную ниже: function setPostViews($postID) {...

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