Bootstrap 4 мобильное меню не работает для разработки WordPress

Вопрос или проблема

У меня есть собственная тема Bootstrap 4, которую я разрабатываю в WordPress. Выпадающее мобильное меню не работает, когда нажимается меню гамбургера на меньших экранах. Я не уверен, нужно ли мне что-то добавить в файл functions.php для мобильного меню или какой-то другой PHP/WordPress код для сворачивающейся навигации?

Мобильное меню будет работать, если я раскомментирую раздел “collapse navbar-collapse”, но тогда появляются два меню. Это говорит мне о том, что все скрипты и CSS работают. Тем не менее, я не уверен, что я упускаю, не могу понять, что не так. Я не использую скрипт navwalker. Я был бы очень признателен за любую помощь!

HTML код

<header>
 <nav class="navbar navbar-expand-md navbar-dark fixed-top bg-dark">

    <img class="ml-2 NVAlogo" src="https://wordpress.stackexchange.com/questions/332457/<?php bloginfo("stylesheet_directory'); ?>/img/NVAlogo.png" alt="логотип"><a class="navbar-brand" href="front.html">Nuvision Alliance</a>
    <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarCollapse" aria-controls="navbarCollapse" aria-expanded="false" aria-label="Переключить навигацию">
      <span class="navbar-toggler-icon"></span>
    </button>

 <?php

     wp_nav_menu( array(

        'menu'    =>      'primary',

        'container'         =>      'nav',

        'container_class'   =>      'navbar-collapse collapse',

        'menu_class'        =>      'nav navbar-nav navbar-right'

     ));

  ?>



  <div class="collapse navbar-collapse" id="navbarCollapse">
   <ul class="navbar-nav mr-auto">

       <!-- <li class="nav-item">
          <a class="nav-link" href="mission.html">Миссия</a>
        </li>
          <li class="nav-item">
          <a class="nav-link" href="causes.html">Причины</a>
        </li>
           <li class="nav-item">
          <a class="nav-link" href="index.html">Блог</a>
        </li>

          <li class="nav-item">
          <a class="nav-link" href="contact.html">Контакт</a>
        </li>

      </ul>-->

    </div>
  </nav>
</header>

У вас нет идентификатора в вашем вызове wp_nav_menu. Добавьте 'container_id' => 'navbarCollapse', в массив, который вы передаете. И удалите HTML ниже с закомментированным кодом.

У меня была похожая проблема – убедитесь, что jquery.js присутствует и ссылка работает на странице.

Ответ или решение

Проблема с мобильным меню Bootstrap 4 в разработке WordPress

При разработке темы на Bootstrap 4 для WordPress иногда возникают ситуации, когда мобильное меню не работает должным образом при нажатии на гамбургер-меню в условиях малых разрешений экрана. Давайте рассмотрим, как можно решить эту проблему и что необходимо проверить.

1. Структура HTML

Вы предоставили следующий фрагмент HTML для навигационной панели:

<header>
    <nav class="navbar navbar-expand-md navbar-dark fixed-top bg-dark">
        <img class="ml-2 NVAlogo" src="https://wordpress.stackexchange.com/questions/332457/<?php bloginfo("stylesheet_directory"); ?>/img/NVAlogo.png" alt="logo">
        <a class="navbar-brand" href="front.html">Nuvision Alliance</a>
        <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarCollapse" aria-controls="navbarCollapse" aria-expanded="false" aria-label="Toggle navigation">
            <span class="navbar-toggler-icon"></span>
        </button>

        <?php
        wp_nav_menu( array(
            'menu' => 'primary',
            'container' => 'nav',
            'container_class' => 'navbar-collapse collapse',
            'menu_class' => 'nav navbar-nav navbar-right'
        ));
        ?>

        <div class="collapse navbar-collapse" id="navbarCollapse">
            <ul class="navbar-nav mr-auto">
                <!-- Пример элементов меню -->
            </ul>
        </div>
    </nav>
</header>

2. Ошибки в коде и их устранение

  1. ID для контейнера меню: В вашем вызове wp_nav_menu() не хватает идентификатора контейнера. Вам необходимо добавить 'container_id' => 'navbarCollapse', в массив параметров. Это связывает ваше мобильное меню с кнопкой-гамбургером.

    wp_nav_menu( array(
        'menu' => 'primary',
        'container' => 'div',
        'container_id' => 'navbarCollapse',
        'container_class' => 'collapse navbar-collapse',
        'menu_class' => 'navbar-nav mr-auto'
    ));
  2. Удаление лишнего HTML: Вам нужно убрать повторяющийся блок <div class="collapse navbar-collapse" id="navbarCollapse">. Это может привести к конфликтам в отображении, если вы используете одно и то же ID для двух элементов.

  3. Проверка загрузки jQuery: Убедитесь, что jQuery загружается на сайте. В большинстве случаев WordPress автоматически включает jQuery, однако в вашей теме он может быть отключен.

    Для добавления jQuery в theme functions.php можно использовать следующий код:

    function my_theme_enqueue_scripts() {
        wp_enqueue_script('jquery');
    }
    add_action('wp_enqueue_scripts', 'my_theme_enqueue_scripts');

3. Проверка CSS и JavaScript

  1. Проверка наличия стилей Bootstrap: Убедитесь, что CSS Bootstrap корректно подключен к вашей теме. В случае его отсутствия мобильное меню может работать некорректно.

  2. Проверка пользовательских скриптов: Если в вашей теме вы добавляете пользовательские JavaScript-файлы, убедитесь, что они не конфликтуют с библиотеками Bootstrap.

4. Тестирование

После внесения изменений проверьте работоспособность мобильного меню на различных устройствах и разрешениях экрана. Лучше всего использовать инструменты разработчика в браузере (например, Chrome DevTools), чтобы протестировать адаптивность.

Заключение

Соблюдение описанных выше рекомендаций должно помочь вам решить проблему с мобильным меню в вашей теме WordPress. Надеюсь, данная информация будет полезной для вас. Если возникнут дополнительные вопросы, не стесняйтесь обращаться за помощью!

Оцените материал
Добавить комментарий

Капча загружается...