Добавить в произвольное меню категорий, количество в них постов

Решено

У меня есть обычный вывод меню с рубриками.

Добавить в произвольное меню категорий, количество в них постов

но хотелось бы к ним добавить количество постов в них  а именно в самом меню к каждому <li> добавлялось бы значение. подскажите как это сделать ?

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

Вот упрощенная версия


<?php
class Count_Walker extends Walker_Nav_Menu {
function start_el( &$output, $item, $depth = 0, $args = array(), $id = 0 ) {

$indent = ( $depth ) ? str_repeat( "\t", $depth ) : '';

$class_names = $value = '';

$classes = empty( $item->classes ) ? array() : (array) $item->classes;

$classes[] = 'menu-item-' . $item->ID;

$class_names = join( ' ', apply_filters( 'nav_menu_css_class', array_filter( $classes ), $item, $args ) );

$class_names = $class_names ? ' class="' . esc_attr( $class_names ) . '"' : '';

$id = apply_filters( 'nav_menu_item_id', 'menu-item-'. $item->ID, $item, $args );

$id = $id ? ' id="' . esc_attr( $id ) . '"' : '';

$output .= $indent . '<li' . $id . $value . $class_names .'>';

$atts = array();

$atts['title']  = ! empty( $item->attr_title ) ? $item->attr_title : '';

$atts['target'] = ! empty( $item->target )     ? $item->target     : '';

$atts['rel']    = ! empty( $item->xfn )        ? $item->xfn        : '';

$atts['href']   = ! empty( $item->url )        ? $item->url        : '';

$atts = apply_filters( 'nav_menu_link_attributes', $atts, $item, $args );

$attributes = '';

foreach ( $atts as $attr => $value ) {

if ( ! empty( $value ) ) {

$value = ( 'href' === $attr ) ? esc_url( $value ) : esc_attr( $value );

$attributes .= ' ' . $attr . '="' . $value . '"';

}

}

$item_output = $args->before;

$item_output .= '<a '. $attributes .'>';

$item_output .= $args->link_before . apply_filters( 'the_title', $item->title, $item->ID ) . $args->link_after;
if ($item->hasChildren && $depth == 0) {

$item_output .= '</a>';

}elseif($item->type == 'taxonomy'){

$cat = get_category( $item->object_id);

$item_output .= ' ('.$cat->count.')</a>';

} else {

$item_output .= '</a>';

}
$item_output .= $args->after;

$output .= apply_filters( 'walker_nav_menu_start_el', $item_output, $item, $depth, $args );

return;
}

}

Работает

Добавить Комментарий

Вам нужно добавить количество записей в админке или во внешней части сайта?

Добавить Комментарий

Мне нужно во внешней части, желательно добавить их через functions.php

Я решил эту задачу вот таким способом:


<nav class="uk-navbar-container" uk-navbar>

<div class="uk-navbar-center">

<?//= $cases ?>

<ul class="uk-navbar-nav uk-text-center">

<?php

$mycats = wp_list_categories('show_count=1&title_li=&echo=0');

$mycats = str_replace(array('</a>','(',')'), array('<span class="uk-label uk-label-yellow color-black uk-margin-small-left">','','</span></a>'), $mycats);

echo $mycats;

?>

</ul>

</div>

</nav>

 

но не очень удобно. хотелось бы сделать через  —  ‘walker’  => new WordPressUikitMenuWalker(‘navbar’),

Готового решения у меня нет, написать его смогу если только позже.

А пока посмотрите в сторону вот этих решений:

https://gist.github.com/hansspiess/6823797

http://stackoverflow.com/questions/35203669/wordpress-walker-how-to-add-number-of-post-to-category-menu-items

Если не получится, или получится напишите пожалуйста. Если не выйдет, то напишу.

в 05.03.2017.
Добавить Комментарий

Версия с Bootstrap меню работает но выдает много лишних ошибок из-за не совместимости с моим для UiKit.

Немного не могу допилить под себя. Если не затруднит, возможно его доработать под UiKit — http://monopixel.ru/walker-uikit.zip

Так же он адаптирован под uikit 2, если можно переделать выпадающее меню поп Uikit 3.0 я выложит для всех, думаю будет хорошее дополнение к тому что уже есть.

Добавить Комментарий

Ваш ответ

Размещая свой ответ, вы соглашаетесь с правилами сайта.