Перестало работать выпадающее меню wordpress?

Ссылка скопирована
1 ответ

После тогда как отредактировал меню, просто добавил новые туда ссылки, перестало работать под меню, 2 и 3 уровня, в чём может быть нюанс?

Дополнительно:

Например, в том, что меню не предусматривает добавление ссылок на такой уровень вложенности и не умеет их показывать. Нужно смотреть menu-walker, помимо того нужно смотреть что реально показывается на странице
"Не работает" - это очень расплывчатое определение. Не показывается подменю при ховере, не добавились ссылки в меню, сайт в 500 упал, что там?

  • Илья Салигжанов, Ваш ответ дал мне решение! Я проверил хук Walker_Nav_Menu{}, и оказалось что там просто не был прописан такой уровень вложенности!
  • Ответьте на вопрос сами, пожалуйста)
    Просто чтобы в открытых не висел
  • Я проверил хук Walker_Nav_Menu{}, и оказалось что там просто не был прописан такой уровень вложенности!

    Нужно решить такую задачу?

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

    Заказать помощь
    Лучший ответ
    1
    Игорь NetOps Ответ

    Если после добавления новых пунктов перестали работать 2-й и 3-й уровни меню, сначала нужно разделить две ситуации: подменю есть в HTML, но не показывается, или WordPress вообще не выводит вложенные уровни.

    Если в DOM нет <ul class="sub-menu"> для 2/3 уровня, причина обычно в параметре depth или кастомном Walker. Проверьте вызов меню:

    wp_nav_menu([
        'theme_location' =&gt; 'primary',
        'menu_class'     =&gt; 'nav-menu',
        'depth'          =&gt; 0, // 0 = без ограничения глубины
    ]);

    wp_nav_menu([ 'theme_location' =&gt; 'primary', 'menu_class' =&gt; 'nav-menu', 'depth' =&gt; 0, // 0 = без ограничения глубины ]);

    Если используется свой класс от Walker_Nav_Menu, в нём должны быть методы для уровней, минимум start_lvl() и end_lvl():

    class Theme_Menu_Walker extends Walker_Nav_Menu {
        public function start_lvl(&amp;$output, $depth = 0, $args = null) {
            $output .= PHP_EOL . '&lt;ul class="sub-menu sub-menu--level-' . (int) ($depth + 1) . '"&gt;' . PHP_EOL;
        }
     
        public function end_lvl(&amp;$output, $depth = 0, $args = null) {
            $output .= '&lt;/ul&gt;' . PHP_EOL;
        }
    }

    class Theme_Menu_Walker extends Walker_Nav_Menu { public function start_lvl(&amp;$output, $depth = 0, $args = null) { $output .= PHP_EOL . '&lt;ul class="sub-menu sub-menu--level-' . (int) ($depth + 1) . '"&gt;' . PHP_EOL; } public function end_lvl(&amp;$output, $depth = 0, $args = null) { $output .= '&lt;/ul&gt;' . PHP_EOL; } }

    Если sub-menu есть в HTML, но не раскрывается, смотрите CSS и JS: возможно, стили рассчитаны только на один уровень вложенности или скрипт открывает только ближайший .sub-menu. Для 3-го уровня часто нужно добавить отдельные CSS-правила позиционирования.

    Итог по вашему случаю: если в Walker_Nav_Menu не был прописан нужный уровень вложенности, править нужно именно walker или убрать ограничение глубины в wp_nav_menu().

    Другие ответы (0)

    Пока нет других ответов. Будьте первым, кто поможет автору.

    Ответить на вопрос

    комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *

    Вам также может быть интересно