Поддержка Проблемы и решения Удалить пустые категории из wp_nav_menu

  • Решено carbonady

    (@carbonady)


    А может и не так вопрос надо было поставить. В общем, задача — создать динамичное меню, чтобы оно автоматом включало в себя лишь те рубрики, в которых есть записи. Страницы и ссылки, само собой, добавлять в него надо будет по-прежнему вручную. Но вот имена непустых рубрик хотелось бы автоматом.

    Тривиальная задача, но Гугл молчит.

Просмотр 9 ответов — с 1 по 9 (всего 9)
  • задача не тривиальная, поэтому гугл и молчит.
    мой вам совет — не включайте в меню рубрики, в которых нет записей.

    Автор carbonady

    (@carbonady)

    Flector, совет странный, как минимум. От автоматизации обычно ждёшь автоматизма, а не поставки ручных рубильников.

    совет странный, как минимум. От автоматизации обычно ждёшь автоматизма,

    Странно ждать автоматизация в чём-то, вручную составленном.

    Хотя в данном случае мб и можно реализовать хотелку.. Я не интересовался

    Автор carbonady

    (@carbonady)

    Хотелки — это вручную созданные меню для конкретных сайтов, кастомизированные. Их больше никуда не применишь. Другая клиника — это плагины. Тоже по хотелке сделанные. А автоматизация универсального функционала CMS по реализации меню — это его расширение, годное для любого проекта и удобное для любого пользователя.

    это в виджетах рубрик можно не выводить рубрику, в которых нет записей. потому что это виджет рубрик.

    а меню это ссылки, которые проставляет пользователь. проставил ссылку на пустую рубрику — будет такая ссылка. ваша хотелка это не делать то, что хочет сделать пользователь.

    Автор carbonady

    (@carbonady)

    Flector, все в курсе разницы между Рубрикатором и Меню. Как и нелогичной разницы в функционале их автоматизации.

    Нет моей хотелки в том, что вы решаете за пользователя — иметь ему автоматизацию в меню, либо не иметь. Хотите доказать, что такая автоматизация — это неудобство и бесполезность? Докажите всему Гуглу и данному форуму: вопрос задан и был обсужден не единожды — как там, так и здесь, годы подряд. Но разрабами Вордпресса так и не услышан.

    Придумайте — как реализовать в интерфейсе настройки меню один единственный чекбокс «Скрывать из меню рубрики без записей».

    Модератор Sergey Biryukov

    (@sergeybiryukov)

    Live and Learn

    Скрывать из меню рубрики без записей

    Можно добавить фрагмент в functions.php активной темы:

    function hide_empty_terms_from_nav_menu( $menu_items, $args ) {
    	foreach ( $menu_items as $key => $item ) {
    		if ( 'taxonomy' !== $item->type ) {
    			continue;
    		}
    
    		$term = get_term_by( 'id', $item->object_id, $item->object );
    
    		if ( ! $term || ! $term->count ) {
    			unset( $menu_items[ $key ] );
    		}
    	}
    
    	return $menu_items;
    }
    add_filter( 'wp_nav_menu_objects', 'hide_empty_terms_from_nav_menu', 10, 2 );

    кому-то что-то доказывать — это смешно.
    давно бы уже написали свою собственную функцию по вывода меню, не трогая стандартное произвольное меню.

    Автор carbonady

    (@carbonady)

    Sergey Biryukov, отлично работает. То, что нужно. Попиарю решение, а то повсюду в интернетиках валяются незакрытые темы по проблеме.

    Flector, в этом и смысл — расширить функционал стандартного меню, никак его не трогая. Вам, без смеха, это только что доказали. Пользуйтесь.

Просмотр 9 ответов — с 1 по 9 (всего 9)
  • Тема «Удалить пустые категории из wp_nav_menu» закрыта для новых ответов.