@Otrivin
junior full-stack сисадмин

WordPress. Как передать переменной результат функции wp_nav_menu?

Здравствуйте.
На сайте есть дубль меню, находится в подвале. В целях внутренней оптимизации решено ссылкам из него не передавать вес.

Задача: ссылкам из нижнего меню добавить атрибут nofollow.

Меню выводится так:
<?php
            wp_nav_menu(array(
            'menu' => 'footer', // название меню
            'container' => 'div', // контейнер для меню, по умолчанию 'div', в нашем случае ставим 'nav', пустая строка - нет контейнера
            'container_class' => 'menu_footer_bold', // класс для контейнера
            'container_id' => '', // id для контейнера
            'menu_class' => 'ul_a', // класс для меню
            'menu_id' => '', // id для меню
        ));?>

Пробовал решить следующим образом: создаем переменную, ей присваиваем результат wp_nav_menu , затем обрабатываем её функцией str_replace и выводим на страницу. Вот код:
<?php
            $nav = wp_nav_menu(array(
              'menu' => 'footer', // название меню
              'container' => 'div', // контейнер для меню, по умолчанию 'div', в нашем случае ставим 'nav', пустая строка - нет контейнера
              'container_class' => 'menu_footer_bold', // класс для контейнера
              'container_id' => '', // id для контейнера
              'menu_class' => 'ul_a', // класс для меню
              'menu_id' => '', // id для меню
            ));
            $nav = str_replace('<a ', '<a rel="nofollow" ', $nav);
            echo $nav;
        ?>


Код не работает - выводится просто меню как если бы просто отрабатывала функция wp_nav_menu. При этом, если присваивать переменной текстовую строку вида '<a href="ля-ля-ля">тест</a>', замена выполняется.

В чем проблема, как реализовать задуманное?
  • Вопрос задан
  • 491 просмотр
Решения вопроса 1
deniscopro
@deniscopro Куратор тега WordPress
WordPress-разработчик, denisco.pro
У функции wp_nav_menu есть параметр "echo", отвечающий за вывод на экран. Попробуйте добавить его в атрибуты:
$nav = wp_nav_menu(array(
              'menu' => 'footer', // название меню
              'container' => 'div', // контейнер для меню, по умолчанию 'div', в нашем случае ставим 'nav', пустая строка - нет контейнера
              'container_class' => 'menu_footer_bold', // класс для контейнера
              'container_id' => '', // id для контейнера
              'menu_class' => 'ul_a', // класс для меню
              'menu_id' => '', // id для меню,
              'echo' => false
            ));
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы