Фнкция wp_nav_menu() генерирует следующую структуру:
<ul id="" class="">
<li id="" class=""><a href=""></a></li>
</ul>
Вопрос такой, как удалить стандартные классы и id у элементов списка li и добавить свои классы этим li и тегу a внутри него.
Вычитал, что можно через объект Walker
class mainMenuWalker extends Walker_Nav_Menu {
function start_el(&$output, $item, $depth, $args) {
// назначаем классы li-элементу и выводим его
$class_names = ' class="main-menu_item"';
$output.= '<li' .$class_names. '>';
// назначаем атрибуты a-элементу
$attributes.= !empty( $item->url ) ? ' href="' .esc_attr($item->url). '" class="main-menu_link" ' : '';
$item_output = $args->before;
// проверяем, на какой странице мы находимся
$current_url = (is_ssl()?'https://':'http://').$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
$item_url = esc_attr( $item->url );
$item_output.= '<a'. $attributes .'>'.$item->title.'</a>';
// заканчиваем вывод элемента
$item_output.= $args->after;
$output.= apply_filters( 'walker_nav_menu_start_el', $item_output, $item, $depth, $args );
}
}
В данном примере классы тупо вшиты, что и пойдет если на сайте одно меню, но как быть если их 2 допустим и оформление разное... Как можно передавать название классов параметром? Туговато у меня с php пока, поэтому прошу вашей помощи.
Для этого есть функция wp_get_nav_menu_items( $menu ). Пример использования:
$menu_name = 'custom_menu_slug';
if( $locations = get_nav_menu_locations() && isset($locations[ $menu_name ]) ){
$menu = wp_get_nav_menu_object( $locations[ $menu_name ] ); // получаем ID
$menu_items = wp_get_nav_menu_items( $menu ); // получаем элементы меню
// создаем список
$menu_list = '<ul id="menu-' . $menu_name . '">';
foreach ( (array) $menu_items as $key => $menu_item ){
$menu_list .= '<li><a href="' . $menu_item->url . '">' . $menu_item->title . '</a></li>';
}
$menu_list .= '</ul>';
}
else
$menu_list = '<ul><li>Меню "' . $menu_name . '" не определено.</li></ul>';
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Не могу понять , как сделать так , чтобы при удачной проверки формы ( required ) показывался alert с сообщением о том , что письмо удачно отправилось
Хочу для Всех пользователей, которые в группе "регистр", показать сообщение, а для тех, кто в других группах, не показыватьКак сделать такую...
Только начинаю изучение веба, а именно php, все что выдает гугл это "Создание сайта на php + mysql"Вопрос следующий - это единственный способ использования...
Почему-то php-скрипт не отправляет данные на почтуЯ даже сделал запись в файл, чтобы задебажить получение данных, но запись не происходит