Вопрос или проблема
В моем меню WordPress есть элемент верхнего или заголовочного меню. Я знаю, как его найти и использовать CSS, чтобы скрыть его, но это не совсем то, что я хочу.
На данный момент у меня есть меню с полосами, которые при нажатии переходят к fa-angle-down, и элемент заголовочного меню, который при нажатии ведет к фактическому меню. Я хотел бы убрать этот промежуточный этап меню, состоящий из заголовочного меню и fa-angle-down, чтобы пользователь переходил сразу от полос к фактическому меню. Я посмотрел в свой header.php и нашел fa-bars
, но ничего, что указывало бы на его атрибут, а в navwalker.php нашел fa-angle-down, но ничего, что указывало бы, как это связано с fa-bars.
Я предполагаю, что мне просто нужно удалить определенную часть navwalker.php, но какую часть?
Вот мой navwalker.php: https://github.com/ColorlibHQ/shapely/blob/master/inc/class-wp-bootstrap-navwalker.php
Вот мой header.php: https://github.com/ColorlibHQ/shapely/blob/master/header.php
Страница находится здесь
Вот PHP, который, как я думаю, управляет этим.
$item_output = $args->before;
/*
* Glyphicons
* ===========
* Поскольку элемент меню НЕ является разделителем или заголовком, мы проверяем, есть ли
* значение в свойстве attr_title. Если свойство attr_title
* не пусто, мы применяем его как имя класса для глифа.
*/
if ( ! empty( $item->attr_title ) ) {
$item_output .= '<a' . $attributes . '><span class="glyphicon ' . esc_attr( $item->attr_title ) . '"></span> ';
} else {
$item_output .= '<a' . $attributes . '>';
}
$item_output .= $args->link_before . apply_filters( 'the_title', $item->title, $item->ID ) . $args->link_after;
$item_output .= ( $args->has_children ) ? ' </a><span class="dropdown-toggle shapely-dropdown" data-toggle="dropdown"><i class="fa fa-angle-down" aria-hidden="true"></i></span>' : '</a>';
$item_output .= $args->after;
$output .= apply_filters( 'walker_nav_menu_start_el', $item_output, $item, $depth, $args );
}// Конец if().
}
Вот HTML:
<i class="fa fa-bars"></i>
</div>
<div class="module-group right">
<div class="module left">
<div class="collapse navbar-collapse navbar-ex1-collapse"><ul id="menu" class="menu"><li id="menu-item-3530" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children menu-item-3530 dropdown"><a title="Contact" href="https://4309.co.uk/contact/">Contact </a><span class="dropdown-toggle shapely-dropdown" data-toggle="dropdown"><i class="fa fa-angle-down" aria-hidden="true"></i></span>
Это очень плохо написанное меню. Для того чтобы действительно это исправить, вам также нужно будет редактировать используемый JS.
Как довольно простое решение, найдите следующее правило в вашем style.css
…
.mobile-menu ul.dropdown-menu.active {
display: block !important;
}
Примечание: есть несколько случаев .mobile-menu ul.dropdown-menu.active
, убедитесь, что вы редактируете то, что не находится в медиазапросе.
Измените указанное правило на…
.mobile-menu ul.dropdown-menu.active,
.mobile-menu ul.dropdown-menu {
display: block !important;
}
Теперь, когда вы нажимаете на первое меню, второе меню должно открываться по умолчанию.
Поскольку вам больше не нужно второе меню, вы можете просто его скрыть. Добавьте это в ваш таблицу стилей…
.mobile-menu .shapely-dropdown {
display: none !important;
}
Ответ или решение
Чтобы убрать верхний элемент меню и иконку Font Awesome в меню WordPress, следуйте приведенным ниже шагам. Учитывая, что вы уже имеете представление о CSS и PHP-коде вашего шаблона, я расскажу, как это сделать с минимальным вмешательством в код.
1. Удаление элемента меню
Для начала, если вы хотите полностью удалить элемент верхнего меню (например, элемент, который отображает иконку fa-angle-down
), вам нужно будет изменить код в вашем файле navwalker.php
. Ваша проблема заключается в том, что код для элемента меню, который содержит выпадающее меню, не приводит к переходу на следующий уровень, а только открывает подменю.
Ниже приведены инструкции для редактирования navwalker.php
:
- Найдите следующий код в файле
navwalker.php
:
$item_output .= ( $args->has_children ) ? '</a><span class="dropdown-toggle shapely-dropdown" data-toggle="dropdown"><i class="fa fa-angle-down" aria-hidden="true"></i></span>' : '</a>';
- Замените его на:
$item_output .= '</a>';
Это изменение устранит иконку fa-angle-down
, когда у элемента есть подменю, и сделает его простым элементом ссылки для перехода.
2. Отмена интермедиационного меню с помощью JavaScript
Если меню зависит от JavaScript для работы с выпадающими элементами, вам, возможно, потребуется внести изменения в JavaScript, чтобы корректно обрабатывать клики на элементах меню. Убедитесь, что скрипт, который отвечает за отображение подменю, также удалён или отключён.
3. Изменение CSS
Чтобы скрыть элемент, который больше не нужен, вы можете добавить следующий CSS-код в файл вашей темы или в настройках пользовательского CSS:
.mobile-menu .shapely-dropdown {
display: none !important;
}
Этот код скроет выпадающее меню, если оно больше не требуется.
4. При необходимости – добавление новых правил в CSS
Если это не будет работать, и вы все еще видите выпадающее меню после выполнения вышеуказанных изменений, добавьте следующее правило в style.css
:
.mobile-menu ul.dropdown-menu.active,
.mobile-menu ul.dropdown-menu {
display: block !important;
}
Это правило гарантирует, что все активные элементы меню будут отображаться, даже если вы скрываете выпадающее меню.
Заключение
После выполнения всех этих шагов вы должны устранить ненужный элемент верхнего меню и иконку Font Awesome, что позволит пользователям переходить прямо к вашему основному меню без промежуточного этапа. Если у вас есть другие специфические вопросы или нужно решение, пожалуйста, не стесняйтесь обращаться.