O
O
Otrivin2017-02-15 17:20:47
PHP
Otrivin, 2017-02-15 17:20:47

WordPress. How to pass the result of the wp_nav_menu function to a variable?

Hello.
The site has a duplicate menu, located in the basement. For the purpose of internal optimization, it was decided not to transfer weight to links from it.
Task: add the nofollow attribute to links from the bottom menu.
The menu looks like this:

<?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 для меню
        ));?>

I tried to solve it as follows: create a variable, assign the result of wp_nav_menu to it, then process it with the str_replace function and display it on the page. Here is the code:
<?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;
        ?>

The code does not work - just a menu is displayed as if the wp_nav_menu function was just working. In this case, if you assign a text string of the form to a variable '<a href="ля-ля-ля">тест</a>', the replacement is performed.
What is the problem, how to implement the plan?

Answer the question

In order to leave comments, you need to log in

1 answer(s)
D
Denis Yanchevsky, 2017-02-15
@Otrivin

The wp_nav_menu function has an "echo" parameter that is responsible for displaying it on the screen. Try adding it to the attributes:

$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
            ));

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question