scottb
  • 0
Гуру

Как удалить атрибуты класса из разметки пользовательского меню?

  • 0

Просто играю с добавлением поддержки «настраиваемого меню» в мою тему. Я очень взволнован этим.

ОДНАКО,

Проверьте это >

<ul id="menu-my-main-menu" class="menu">
  <li id="menu-item-12" 
      class="menu-item menu-item-type-custom menu-item-object-custom current-menu-item current_page_item menu-item-home menu-item-12">
      <a href="http://localhost/bizsite">Home</a>
  </li>
</ul>

Худший случай «class-itus», который я когда-либо видел. Это что-то, что «я» сделал непреднамеренно, или это по умолчанию?

Как я могу контролировать или удалять атрибуты класса в этих меню?

Share
  1. Худший «класс-итус»? Значит, вы не видели Drupal. 😉 Кстати, есть ли функциональная причина, по которой вы хотите их удалить, или они вам просто не нравятся?

    • 0
    • @Майк: Ты прав. Мне не нужен Drupal с WP 😉

      • 0
    • @Mike: я полностью за использование соответствующих атрибутов класса, однако в этом случае нет необходимости ни в чем, кроме, может быть, единственного объявления элементов li, и ИМХО это будет один элемент текущего меню. Элементы списка структурно самоописываются, поэтому я не уверен, зачем нам нужен такой уровень детализации. Я могу получить практически любой дизайн, который мне нужен (включая всплывающие меню) с родительским классом ul и ничего больше. В них нет ничего существенного, чтобы гарантировать наличие 7 имен классов в одном элементе li. Вы должны согласиться, нет? (скрещивает пальцы, что Майк не записывал эти биты в ядро ​​:-)

      • 0
    • РЖУ НЕ МОГУ! Я ничего не записывал в ядро. Я понимаю, что они вам не нужны, но мне интересно, стоит ли их удалять, когда для избавления от них потребуется больше кода и немного больше времени обработки. Почему бы не сосредоточиться на добавлении того, что приносит пользу, вместо того, чтобы удалять то, что не имеет никакого эффекта? Я просто говорю…

      • 0
    • Вам нужно вернуться к обратным вызовам фильтра, я добавлю +1 к ответу, если вы добавите это.

      • 0
    • @keatch: Спасибо за ответ. Я буду использовать это немедленно 🙂

      • 0
    • @keatch: это все или ничего? Единственное, что я хотел бы сохранить, это текущий элемент меню, который на самом деле является единственным пригодным для использования классом, в котором я вижу необходимость здесь.

      • 0
    • Вы можете оставить его единственным элементом и отключить все остальные элементы. $classes — это массив, который вы можете перебирать

      • 0
    • Фильтр должен возвращать массив, в противном случае join() будет выдано предупреждение, поскольку он вызывается на NULL . Я обновил ответ.

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

    См. пример ниже, чтобы удалить ВСЕ классы CSS, добавленные к вашим пунктам меню:

    add_filter('nav_menu_css_class','remove_nav_menu_classes');
    function remove_nav_menu_classes($classes) {
        return array(); 
    }
    

    Сделайте, print_r($classes) если вы хотите знать, какие классы активны в вашем меню.

    • 0

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

You must login to add an answer.