Как вставить меню Bootstrap 4 в WordPress? - PullRequest
0 голосов
/ 02 ноября 2019

Я пытаюсь настроить меню панели навигации Bootstrap 4, но не могу заставить его работать так, как мне хотелось.

Новый код меню панели навигации Bootstrap 4 выглядит следующим образом.

<nav class="navbar navbar-expand-lg navbar-dark bg-success">
  <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNavAltMarkup" aria-controls="navbarNavAltMarkup" aria-expanded="false" aria-label="Toggle navigation">
    <span class="navbar-toggler-icon"></span>
  </button>

<div class="collapse navbar-collapse" id="navbarNavAltMarkup">
  <div class="navbar-nav mr-auto">
    <a class="nav-item nav-link active" href="#">Home <span class="sr-only">(current)</span></a>
    <a class="nav-item nav-link" href="#our-company">Our Company</a>
    <a class="nav-item nav-link" href="#our-products">Products</a>
  </div>
  <div class="navbar-nav">
    <a class="nav-item nav-link" href="#"><i class="fa fa-envelope mr-2"></i>email@companyname.com</a>
    <a class="nav-item nav-link" href="#"><i class="fa fa-phone mr-2"></i>+1-234-567-8910</a>
  </div>
</div>
</nav>

Обратите внимание, что nav-элементы заключены в div с классом navbar-nav, который также заключен в родительский div с классом collapse navbar-collapse. Его внешний родительский div - это nav с классом navbar.

С другой стороны, способ отображения меню в WordPress выглядит следующим образом.

<div class="menu-main-menu-container">
  <ul id="menu-main-menu" class="menu">
    <li id="menu-item-11" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-11">
      <a href="#">Home</a>
    </li>
    <li id="menu-item-12" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-12">
      <a href="#our-company">Our Company</a>
    </li>
    <li id="menu-item-13" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-13">
      <a href="#our-products">Our Products</a>
    </li>
  </ul>
</div>

WordPress выполняет меню, используя ul и li,В то время как Bootstrap делает это с помощью тегов div и anchor.

Мой способ кодирования в WordPress меню выглядит следующим образом:

<?php
  wp_nav_menu([
    'theme_location'  => 'primary',
    'container'       => 'div',
    'container_id'    => '',
    'container_class' => 'collapse navbar-collapse',
    'menu_class'      => 'navbar-nav mr-auto',
  ]);
?>

Теперь, когда меню генерируется, оно выглядело следующим образом:the site.

<div class="navbar-nav mr-auto">
  <ul>
    <li class="page_item page-item-7 current_page_item">
      <a href="http://localhost/envirodyn/" aria-current="page">Home</a>
    </li>
  </ul>
</div>

Если так работает WordPress, то, по крайней мере, я хотел иметь возможность добавить класс .navbar-nav к ul, .nav-item к тегу li,. nav-ссылка на тег привязки.

Таким образом, это выглядело бы так:

<ul class="navbar-nav">
  <li class="nav-item">
    <a class="nav-link">Menu 1</a>
  </li>
  <li class="nav-item">
    <a class="nav-link">Menu 2</a>
  </li>
</ul>

Ответы [ 2 ]

1 голос
/ 02 ноября 2019

Предложение Сарвара Алама сработало для меня! Я поставлю здесь подробный ответ на мой вопрос на тот случай, если у других будет такой же сценарий, как и у меня.

1 Upvote для ответа Сарвара.

По его предложению я искал в Google и нашел ответ по этой ссылке: https://techsolutionshere.com/implementing-bootstrap-navwalker-in-wordpress/

  1. Я скачал файл class-wp-bootstrap-navwalker.php по предоставленной ссылке GitHub.

  2. Поместил файл в корневой каталог моей темы.

  3. Я добавил кодниже внутри моего functions.php файла.

if ( ! file_exists( get_template_directory() . '/class-wp-bootstrap-navwalker.php' ) ) {
    // file does not exist... return an error.
    return new WP_Error( 'class-wp-bootstrap-navwalker-missing', __( 'It appears the class-wp-bootstrap-navwalker.php file may be missing.', 'wp-bootstrap-navwalker' ) );
} else {
    // file exists... require it.
    require_once get_template_directory() . '/class-wp-bootstrap-navwalker.php';
}

Удостоверился, что зарегистрирован nav_menus (в файле functions.php).

Затем вставил код wp_nav_menu в область, куда я хотел поместитьмое навигационное меню на сайте.

wp_nav_menu( array(
    'theme_location'  => 'primary',
    'depth'           => 2, // 1 = no dropdowns, 2 = with dropdowns.
    'container'       => 'div',
    'container_class' => 'collapse navbar-collapse',
    'container_id'    => 'bs-example-navbar-collapse-1',
    'menu_class'      => 'navbar-nav mr-auto',
    'fallback_cb'     => 'WP_Bootstrap_Navwalker::fallback',
    'walker'          => new WP_Bootstrap_Navwalker(),
) );
Отправился на Appearance >> Menus, а затем проверил Display Location Я хочу под Menu Settings.

Альт! Теперь мое навигационное меню Bootstrap 4 работает в стиле WordPress!

1 голос
/ 02 ноября 2019

Вы можете интегрировать загрузчик navbar с WordPress, используя класс wp bootstrap navwalker . Вы можете найти класс из поиска Google.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...