Закавыристый фильтр для Wordpress

В Wordpress есть функция wp_nav_menu(), которая (как ни странно) предназначена для вывода навигационного меню. И есть у неё маленькая особенность: пункты меню выводятся вот в виде:

<_li> пункт 1 < _/li > \n"
прошу прощения за подчёркивания,
не понял как правильно бороться с парсером


Собственно всё устраивает кроме \n". Я конечно нахожу его в исходнике и просто стираю, но хотелось бы реализовать это дело в виде фильтра, который жил бы в functions.php.

Вся сложность, почему я не сделал этого сам заключается в том, что вывод указанного html кода происходит в функции end_el () (исходник (строка 106)). Функция end_el используется в нескольких классах и соответственно в разных классах она разная. Как обратится к нужной, чтобы сделать фильтр я так и не додумался.

Может быть кто-то додумался до меня? Или просто знает, как это сделать?
Заранее спасибо.
  • Вопрос задан
  • 3331 просмотр
Пригласить эксперта
Ответы на вопрос 3
afiskon
@afiskon
Вам больше нечем заняться, кроме как выпиливать символ возврата строки из меню?
Ответ написан
aktuba
@aktuba
Примерно так (на коленке писал):
add_filter('wp_nav_menu_items','repln');
function repln($items, $args) {
return str_replace("<_/li>\n", "<_/li>", $items);
}
Ответ написан
Комментировать
Wott
@Wott
наверное самый простой способ уже написал.

А вообще Walker_Nav_Menu — класс, наследуете от него, переопределяете функцию end_el и передаете в аргументах wp_nav_menu(). Будет более громоздко конечно, но типа «идеологически правильно» :)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы