Поддержка Проблемы и решения Как добавить блок span к раскрывающемуся пункту меню?

  • Есть многоуровневое меню. Как ссылку пункта, который имеет подпункты, изменить с

    <li class="menu-item-has-children">
        <a>ссылка</a>
    </li>

    на

    <li class="menu-item-has-children">
        <a>ссылка <span>что-то тут</span></a>
    </li>
Просмотр 9 ответов — с 1 по 9 (всего 9)
  • добавить в код меню
    <span>что-то тут</span>

    добавить в код меню
    <span>что-то тут</span>

    спасибо, о Капитан Очевидность!
    а как добавить? я, пока что с Walker не совсем разобрался, поэтому и спрашиваю

    а как добавить?

    желательно руками.

    вы действительно уверены что попали на форум телепатов?
    как вы делаете это меню, как вы его выводите?
    это родное от ВП?
    это какой-то плагин?
    ваша собственная разработка?

    Вы не слышали народную айтишную мудрость — чем полнее описана задача, тем быстрее получите решение?

    меню стандарно сделанное в админке
    Делаю так:

    $mobile_menu = wp_nav_menu(
    	array(
    		'theme_location'=> 'mobile-menu',
    		'menu_id'       => 'mobile-menu',
    		'menu_class'	=> 'navbar',
    		'fallback_cb'	=> 'wp_page_menu',
    		'echo'		=> false,
    		'walker' 	=> new My_Walker_Nav_Menu()
    	)
    ); 

    вывожу так:
    echo $mobile_menu;

    My_Walker_Nav_Menu вот

    class My_Walker_Nav_Menu extends Walker_Nav_Menu {
    	function start_lvl(&$output, $depth = 0, $args = Array()) {
    		$indent = str_repeat("\t", $depth);
    		$output .= "\n$indent<ul class=\"dropdown-menu\">\n";
    	}
    }

    меню стандарно сделанное в админке
    Делаю так:

    вы как—то определитесь: «стандартное» или «делаю так»?
    если стандартное, то что значит «делаю так»?
    в любой теме «так» уже все сделано

    вы как—то определитесь: «стандартное» или «делаю так»?
    если стандартное, то что значит «делаю так»?
    в любой теме «так» уже все сделано

    что конкретно не понятно?
    есть меню, сделанное в админке. далее, я записываю меню, предварительно обработанное My_Walker_Nav_Menu, а так же, с учетом необходимых параметров, заданных в качестве аргументов к wp_nav_menu в переменную $mobile_menu, затем, в нужном месте шаблона я вывожу меню с помощью команды
    echo $mobile_menu;
    теперь понятно?

    ааа…. вы в очередной раз строите костыльный велосипед, путем создания «своей темы»?

    ааа…. вы в очередной раз строите костыльный велосипед, путем создания «своей темы»?

    я в очередной раз пытаюсь попросить помощи в решении вопроса, однако <однако уважаем других и правила форума>

    • Ответ изменён 5 лет, 6 месяцев назад пользователем Yui. Причина: диагнозы ставит врач, уважайте других форумчан

    Решение ниже, <п 13 правил форума>

    class My_Walker_Mob_Menu extends Walker_Nav_Menu {
        function start_lvl(&$output, $depth = 0, $args = Array()) {
            $indent = str_repeat("\t", $depth);
            $output .= "\n$indent<ul class=\"dropdown-menu\">\n";
        }
    		
        function start_el(&$output, $item, $depth, $args) {
            // назначаем классы li-элементу и выводим его
            $class_names = join( ' ', $item->classes );
            $class_names = ' class="' .esc_attr( $class_names ). '"';
            $output.= '<li id="menu-item-' . $item->ID . '"' .$class_names. '>';
    
            // назначаем атрибуты a-элементу
            $attributes.= !empty( $item->url ) ? ' href="' .esc_attr($item->url). '"' : '';
            $item_output = $args->before;
    
            // проверяем, есть ли класс menu-item-has-children и, если есть, модифицируем ссылку
            if (strpos($class_names, 'menu-item-has-children')) 
                $item_output.= '<a'. $attributes .'>'.$item->title.'<span></span></a>';
            else 
                $item_output.= '<a'. $attributes .'>'.$item->title.'</a>';
    
            // заканчиваем вывод элемента
            $item_output.= $args->after;
            $output.= apply_filters( 'walker_nav_menu_start_el', $item_output, $item, $depth, $args );
        }
    }
    • Ответ изменён 5 лет, 6 месяцев назад пользователем Yui. Причина: п13
Просмотр 9 ответов — с 1 по 9 (всего 9)
  • Тема «Как добавить блок span к раскрывающемуся пункту меню?» закрыта для новых ответов.