WordPress Development Stack Exchange is a question and answer site for WordPress developers and administrators. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I have a WP 3.3.0 site running in production. (version.php says $wp_version = '3.3';)

I have a main menu using WP's built-in functionality. I use

wp_nav_menu(array( 'container_class' => 'menu-header', 'theme_location' => 'primary')); 

I made a copy of that site, installed it in a different location, and ran an update to 3.3.1.

This broke the blog's navigation: The CSS styles were no longer applied. I quickly found out why. What previously looked like so:

<div class="menu-header">
 <ul id="menu-mainmenu" class="menu">
   <ul class="sub-menu">

Now looks like so:

 <div class="menu">
     <ul class="children">

Now I totally agree this is a change that improves semantics and all, but do I really have to expect breaking changes from a "stability and maintenance update" - especially changes that aren't even mentioned in the announcement? That would mean a frontend expert would have to be standing by to put out fires every time a minor update comes out, and that would really stink.

Edit: I just checked the nav-menu-template.php on the updated (faulty) install and it contains no reference to submenus getting a child class. Also the diff for the file shows no breaking changes were made. I'm completely confused where this comes from, will investigate further.

share|improve this question
up vote 2 down vote accepted

The markup above looks like a menu was not actually assigned to the area and is using the wp_list_pages() fallback instead. Point release changes (e.g. 3.3 to 3.3.1) are always going to be for major bugfixes and/or security, never for changes in functionality.

share|improve this answer
Interesting. I'll check whether anything went awry with assigning the menus. – Pekka 웃 Feb 18 '12 at 21:11
Indeed: I don't completely understand why, but the new template didn't load the main menu by default: I explicitly added the menu parameter to wp_show_nav() and it works now. Thanks very much. – Pekka 웃 Feb 26 '12 at 10:15

I actually had a problem with this and it turns out the default structure and naming convention was changed.. there is now an extra div between the main nav's UL and the container.. there sub nav class has also been changed from .children to .sub-menu... as a result if you have fairly strict css rules for your nav system... then you'll need to re-write them.

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.