eddyward
  • 0
Новичок

Wp_nav_menu удалить класс и идентификатор из li

  • 0

Я новичок в WordPress и пытаюсь научиться создавать темы. Прямо сейчас я использую wp_nav_menu для создания своего меню. Мое меню состоит из страниц и категорий.

Однако генерация меню по умолчанию выглядит так

<div id="navi">
<div class="menu-primary-container">  
  <ul id="menu-primary" class="menu">
    <li id="menu-item-14" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-14"></li>
    <li id="menu-item-16" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-16"></li>
    <li id="menu-item-20" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-20"></li>
    <li id="menu-item-15" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-15"></li>
    <li id="menu-item-17" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-17"></li>
  </ul>
</div>
</div>

Я хочу удалить весь класс и идентификатор из li и ul. Я уже какое-то время гуглю. Пробовал разные методы и не повезло. Любая помощь приветствуется. В настоящее время я использую WordPress 3.1

Заранее спасибо!

Share
  1. Если вы посмотрите на wp_nav_menu() функцию, вы увидите, что элементы написаны с помощью walk_nav_menu_tree() , которая вызывает Walker_Nav_Menu выполнение работы (если вы не указали свой собственный класс обходчика). Этот класс содержит метод start_el() , который вызывается для каждого пункта меню. В этой функции вы видите, что классы фильтруются, nav_menu_css_class а идентификатор фильтруется через nav_menu_item_id . Поэтому, если вы прикрепите свой собственный код к этим хукам, вы можете изменить их на все, что захотите.

    Подменю всегда обертываются с<ul class="sub-menu"> помощью, основную оболочку можно изменить с помощью аргументов menu_id иmenu_class .

    • 0
  2. Вы можете изменить идентификатор и класс каждого элемента с помощью хуков nav_menu_item_id и nav_menu_css_class фильтров следующим образом:

    add_filter('nav_menu_item_id', 'clear_nav_menu_item_id', 10, 3);
    function clear_nav_menu_item_id($id, $item, $args) {
        return "";
    }
    
    add_filter('nav_menu_css_class', 'clear_nav_menu_item_class', 10, 3);
    function clear_nav_menu_item_class($classes, $item, $args) {
        return array();
    }
    

    Это приведет к тому, что элементы будут говорить <li id="" class=""> . Тот же механизм можно использовать для установки идентификаторов для чего-то полезного, например, для ярлыка страницы.

    • 0
  3. function wp_nav_menu_remove_attributes( $menu ){
        return $menu = preg_replace('/ id="(.*)" class="(.*)"/iU', '', $menu );
    }
    add_filter( 'wp_nav_menu', 'wp_nav_menu_remove_attributes' );
    
    • 0

Оставить ответ

You must login to add an answer.