Intereting Posts
Получить список зарегистрированных метакодов и их удаление Страница перенаправления пользовательской таксономии на страницу 404 Форма поиска WordPress с предложением по ключевому слову Опубликовать / обновить сообщение изменяет ссылки на изображение из файла url, чтобы отправить URL Как я могу получить значение из массива файлов cookie, когда я нажимаю кнопку? Изменения, внесенные в php.ini, не влияют на wordpress Изображения, загруженные на внешний интерфейс, отображаются правильно, но не в медиаредакторе. Возможно ли вернуть определенный тег-архив / шаблон в качестве одного из результатов поиска? страница архива типа постпользователя имеет ошибку 404, хотя has_archive истинна the_content () не будет загружать галереи на главной странице Проблема по $ output и permalinks Локальный плагин установки WordPress не загрузит изображение WP Post Template – Шаблоны в собственной папке Коррумпированный дизайн / внешний вид WordPress Есть ли инструкция if, которая может определить, является ли сообщение в цикле последним?

Проблема с пустыми атрибутами класса при запуске фильтра на nav_menu_css_class

Я использую приведенный ниже код, чтобы удалить из пользовательских меню все классы, но текущие элементы меню и текущие меню-родительские классы.

Он работает очень хорошо, однако есть одна проблема, которую я пытаюсь преодолеть. Некоторые пункты меню заканчиваются пустыми атрибутами класса:

<ul id="menu-site-menu" class="menu"> <li id="menu-item-18" class="current-menu-item "><a href="http://localhost/r23">Home</a></li> <li id="menu-item-19" class=""><a href="http://localhost/r23/about-us/">About Us</a></li> <li id="menu-item-20" class=""><a href="http://localhost/r23/contact-us/">Contact Us</a></li> </ul> 

Вероятно, это не такая большая сделка, но я бы вообще не показывал атрибут класса. Можно ли это сделать с незначительными изменениями в коде ниже?

 add_filter('nav_menu_css_class', 'clean_menu_classes', 10, 2); function clean_menu_classes($classes, $item) { $classes = array_filter( $classes, create_function( '$class', 'return in_array( $class, array( "current-menu-item", "current-menu-parent" ) );' ) ); return array_merge( $classes, (array)get_post_meta( $item->ID, '_menu_item_classes', true ) ); } 

Solutions Collecting From Web of "Проблема с пустыми атрибутами класса при запуске фильтра на nav_menu_css_class"

К сожалению, нет фильтра, который может решить эту проблему. Вы должны переопределить функцию start_el ходока . Вот исходный источник:

 $class_names = join( ' ', apply_filters( 'nav_menu_css_class', array_filter( $classes ), $item, $args ) ); $class_names = ' class="' . esc_attr( $class_names ) . '"'; $id = apply_filters( 'nav_menu_item_id', 'menu-item-'. $item->ID, $item, $args ); $id = strlen( $id ) ? ' id="' . esc_attr( $id ) . '"' : ''; $output .= $indent . '<li' . $id . $value . $class_names .'>'; 

Как вы можете видеть, класс всегда добавляется, и он должен быть добавлен только в том случае, если $classes не пуст