More control over wp_nav_menu()

• ~200 words • 1 minute read

I can't count how many times I've Googled some random error or function and found the answer I needed on a personal blog for someone I've never heard of. Because of that, I try to make a point to document fixes to tiny, nagging problems as I discover them.

In that vein, here's a tip for using wp_nav_menu() in your WordPress theme: You may want to have portions of your menu dynamic and controlled by WordPress' built-in menu system, but also include static elements at the bottom of the menu — maybe something like a login link that changes depending on whether or not the user is already logged-in or a members-only area. By default calling wp_nav_menu() renders something like this:

That's nice and convenient, but you can't hard-code any additional <li> elements to this list in your theme. What you can do though is render the list items without the encapsulating <ul> element like this:

wp_nav_menu( "items_wrap" => '%3$s', "container" => "");

This means you'll have to add the encapsulating <ul> element theme. The final product would probably look like this:

Nice little trick that makes the built-in menu management a little more flexible.

--

If you enjoyed reading this consider sponsoring my work on GitHub, subscribing to my newsletter or sharing it on Hacker News.

Published on Friday, July 29th 2011. Read this post as plain-text.