Intereting Posts
изменение входа в систему в wordpress Как создать настраиваемые URL-адреса для настраиваемых подтипов типа сообщений? Новичок: несколько сайтов WP на Windwos 2012 IIS Пользовательский метабокс, вызывающий ошибку: «Вы уверены, что хотите это сделать? Пожалуйста, попробуйте еще раз." WP_Query разбиение на страницы на многострочные разрывы страниц WP или не отображается Добавить новый пользователь и сайт на первую форму Плагин CAPTCHA, где я могу использовать свои собственные изображения и задавать свои собственные вопросы? как удалить метаданные из сообщений моего блога? Список сообщений из пользовательского типа сообщения с иерархией? Что получают спамеры, регистрируясь как пользователь? почему unregister_setting () не определено? Как сделать вывод вывода короткого кода, когда я выбираю Параметры отображения «размер» недоступны в настройках изображения модальный Cookie бесплатный домен не работает Как можно разрешить HTML в Author Bio?

Проблема с пустыми атрибутами класса при запуске фильтра на 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 не пуст