Need to change the output of wp_nav_menu
-
Hello!
I’ve been searching for a solution for days now, but I just can’t seem to find anything.. I’m working on a new theme, and I need to change the output of wp_nav_menu. I know this is done by creating a custom walker, however I am not familiar enough with PHP to create something like that.
What I need the wp_nav_menu to do, is this:
- Show at least two levels, however, only when the parent element is active.
- Elements from each level needs to be contained within a div, preferably with a corresponding class name. Top-level elements in one div, and child elements in another.
If someone has already written a custom walker to do something like this, or would be kind enough to help me write a new one, that would’ve been awesome! You’d be helping a quite desperate man 🙂
Thanks in advance!
-
Although it doesn’t answer your specific question – this example of a custom walker was a great starting point for me in making specific output of custom fields show up in a menu based on post type.
Hi ! I have started making a barebone test theme using header.php, home.php, footer.php and functions.php .
I looked around, found several examples for walker function and created a barebone example.
The only problem i have is that newline \n is not properly escaped. I do not know why. I ‘ve look at function end_el() that also has \n which IS properly processed. I don’t know if this is a bug in PHP executable in my WAMP installation.
Anyway, look here for example.
About problems escaping characters – i stand corrected. To have \t \n and other characters properly escaped, they need to be enclosed in double quotes. These troubles are what i get for not learning basic PHP …
But, sometimes that is not an option. Example would be ‘items_wrap’ option passed in array() argument for wp_nav_menu(). It has to enclosed in single quotes else function will fail to output anything.
String concatenation with for example “\t” or “\n” will work.
- The topic ‘Need to change the output of wp_nav_menu’ is closed to new replies.