[wp-hackers] wp_get_nav_menu_items not working?

Steve Taylor steve at sltaylor.co.uk
Tue Mar 8 13:15:45 UTC 2011


Hi,

I've traced this issue all the way back through the core, and I think
it's something going wrong in get_term:

http://core.trac.wordpress.org/browser/trunk/wp-includes/taxonomy.php#L801

For clarity here's the path back:

- wp_get_nav_menu_items( "hero-carousel" ) calls
wp_get_nav_menu_object( "hero-carousel" ) (which returns nothing)
- wp_get_nav_menu_object( "hero-carousel" ) calls get_term(
"hero-carousel", 'nav_menu' ) (which returns nothing)

In get_term, the $term parameter is of course "hero-carousel" still.
At lines 815 and 819 (in taxonomy.php, above), it fails the object
tests because it's a string. Then, on line 821, casting it with int()
changes it to 0 (zero). From then on, nothing's working - the select
query returns nothing of course.

Now, if I pass the numeric ID of the menu - it works!

But:

"Given a menu name, id or slug, the function returns the menu items
from that navigation menu."
http://codex.wordpress.org/Function_Reference/wp_get_nav_menu_items

Any idea what's going on here? Not so urgent now I've found a way, but
I have another site using the same method, calling
wp_get_nav_menu_items with a slug, and it works fine. The difference
is that this site hasn't been upgraded to 3.1 yet. Is this a bug in
the 3.1 core?

cheers,

Steve Taylor


More information about the wp-hackers mailing list