WordPress.org

Make WordPress Core

Opened 4 years ago

Closed 4 years ago

#14529 closed defect (bug) (invalid)

wp_nav_menu() gives different results when called multiple times - reproducable

Reported by: juggledad Owned by:
Milestone: Priority: normal
Severity: normal Version:
Component: Menus Keywords:
Focuses: Cc:

Description

If you call wp_nav_menu() with the same parameters twice, you get different results.

To reproduce
1) use the TwentyTen theme
2) add two categories: CAT-PARENT and CAT-CHILD
3) add two pages: PAGE-PARENT and PAGE-CHILD
4) add a menu, add the two categories and two pages and adjust them so the children are under the parents
5) edit the header.php from twentyten and after line 67 (which should be
' </div><!-- #branding -->'
add
<?php
echo '<strong>wp_nav_menu=<br></strong>';
wp_nav_menu( array( 'container_class' => 'menu-xxx', 'theme_location' => 'primary' ) );

echo '<strong>END wp_nav_menu<br></strong>';

?>
<?php
echo '<strong>wp_nav_menu=<br></strong>';
wp_nav_menu( array( 'container_class' => 'menu-xxx', 'theme_location' => 'primary' ) );
echo '<strong>END wp_nav_menu<br></strong>';
?>
6) view the site and the generated source
This is the output of the two calls to wp_nav_menu():

First call results

<strong>wp_nav_menu=<br></strong>
<div class="menu-xxx">

<ul id="menu-cat_test" class="menu">

<li id="menu-item-1408" class="menu-item menu-item-type-taxonomy menu-item-1408">

<a href="http://wp301/?cat=3">CAT-PARENT</a>
<ul class="sub-menu">

<li id="menu-item-1409" class="menu-item menu-item-type-taxonomy menu-item-1409">

<a href="http://wp301/?cat=8">CAT-CHILD</a></li>

</ul>

</li>
<li id="menu-item-1413" class="menu-item menu-item-type-post_type menu-item-1413">

<a href="http://wp301/?page_id=3">PAGE-PARENT</a>
<ul class="sub-menu">

<li id="menu-item-1411" class="menu-item menu-item-type-post_type menu-item-1411">

<a href="http://wp301/?page_id=7">PAGE-CHILD</a>

</li>

</ul>

</li>

</ul>

</div>
<strong>END wp_nav_menu=<br></strong>

second call result

<strong>wp_nav_menu=<br></strong>
<div class="menu-xxx">

<ul id="menu-cat_test-1" class="menu">

<li class="menu-item menu-item-type-taxonomy menu-item-1408">

<a href="http://wp301/?cat=3">CAT-PARENT</a>
<ul class="sub-menu">

<li class="menu-item menu-item-type-taxonomy menu-item-1409">

<a href="http://wp301/?cat=8">CAT-CHILD</a></li>

</ul>

</li>
<li class="menu-item menu-item-type-post_type menu-item-1413"><a href="http://wp301/?page_id=3">PAGE-PARENT</a>

<ul class="sub-menu">

<li class="menu-item menu-item-type-post_type menu-item-1411">

<a href="http://wp301/?page_id=7">PAGE-CHILD</a></li>

</ul>

</li>

</ul>

</div>
<strong>END wp_nav_menu=<br></strong>

notice that the <li> in the first call have an id="menu-item-nnnn" and the second call doesn't have that. I know that an ID can only happen once in a page, but since there is a class with the same value, it would seem that neithor call should have an id="..." returned to be consistant.

Change History (1)

comment:1 filosofo4 years ago

  • Milestone Awaiting Review deleted
  • Resolution set to invalid
  • Status changed from new to closed
  • Version 3.0.1 deleted

Please see #13976 for the relevant discussion as to why this feature was added.

Note: See TracTickets for help on using tickets.