WordPress.org

Support

Support » How-To and Troubleshooting » Nav Menu, Remove Container

Nav Menu, Remove Container

  • Hello All,

    I am having a massive issue with a menu…

    I want to remove the div container from the nav menu created by:

    wp_nav_menu( array( 'theme_location' => 'primary', 'container' => '' ) );

    (based in header.php)

    and the menu is registered by:

    register_nav_menus( array(
        'primary' => __( 'Primary Menu', 'makin' ),
    ) );

    (based in functions.php)

    with the theme folder named makin and the theme named makin.

    Anyone got any ideas?
    __________________
    Laurence S Care

Viewing 15 replies - 1 through 15 (of 33 total)
  • chreo at wp
    Member

    @chreo-at-wp

    You will need to get rid of the div-tags themselves in header.php
    <div id=”container”> and </div>, but then you would have no destination for the nav if you cant replace ‘container’ with something else.
    Is there any markup you can use to
    replace ‘container’? Any nested named tag, or is the nav the direct child of #container?

    This would be easier if you copied the relevant source-code from your page, so we could see the structure.

    I wish it were that simple.

    My problem is that the wp_nav_menu() outputs the following:

    <div class='menu'>
    <ul>
    <li>xxx</li>
    <li>xxx</li>
    <li>xxx</li>
    </ul>
    </div>

    so you need to use the function’s arguments ‘container’ => ” to remove that output.

    Unfortunately I cannot get the function to not overlook the argument above. Even though so far as I can tell I have done all that is required by: the function reference (section quoted below)

    In order to remove navigation container, theme location specified in functions.php and used among arguments in function wp_nav_menu ( eg. ‘theme_location’ => ‘primary-menu’ ) must have a menu assigned to it in administration! Othervise argument ‘container’ => ‘false’ is ignored.

    Laurence S Care

    esmi
    Forum Moderator

    @esmi

    Uh? That markup is generated by the wp-nav_menu function.

    @lscare
    : See http://codex.wordpress.org/Function_Reference/wp_nav_menu

    chreo at wp
    Member

    @chreo-at-wp

    So, the <ul> is your actual nav-menu, the <li> tags are the menu-items, sub-menus would be nested in the </li> tags, right?

    @esmi: I have looked and am sure that the two bits of code in my original post satisfy the requirements on that page.

    @chreo: the menu items are listed by the li which is surrounded by the ul. That is all surrounded by the div.

    Here is all of the relevant code:

    <nav>
    <?
        wp_nav_menu(
            array( 'theme_location' => 'primary', 'container' => false )
        );
    ?>
    </nav>

    in header.php

    register_nav_menus( array(
    	'primary' => __( 'Primary Menu', 'makin' ),
    ) );

    in functions.php

    Based on what the function reference says… That is all I beleive I need but it still refuses to work.

    NB. I am aware I use shorthand <? but I have confirmed it is active on the server so it is not the lack of <?php at the beginning of the php code.

    chreo at wp
    Member

    @chreo-at-wp

    Good for you!

    chreo at wp
    Member

    @chreo-at-wp

    Have you tried this?
    <?php wp_nav_menu( array( 'container' => '' ) ); ?>
    It’s from the reference, and I think it should work, since you can use it IF you have an assigned menu, which you do.

    I did and it made no difference I’m afraid.

    chreo at wp
    Member

    @chreo-at-wp

    @esmi What would happen if he just deleted

    'container'       => 'div',
      'container_class' => 'menu-{menu slug}-container',
      'container_id'    => ,

    from the functions.php?

    My functions.php doc has very literally only got:

    <?
    
    register_nav_menus( array(
    	'primary' => __( 'Primary Menu', 'makin' ),
    ) );
    
    ?>

    in it. There is no other code.

    edit: just off to lunch so will pick up when i return… thanks for the help so far

    chreo at wp
    Member

    @chreo-at-wp

    Found where the default container comes from: /wp-includes/nav-menu-template.php
    I have linked to the relevant portion.
    Try commenting out

    <?php
    $defaults = array( 'menu' => '',
    /**'container' => 'div', 'container_class' => '', 'container_id' => '', */
    'menu_class' => 'menu',
    ?>

    It’s a brute force approach, and probably much frowned upon, but if you can find no other solution . . . and it still might not work unless you change things elsewhere afterwards.

    A thought: have you made sure you are not showing cached pages when you check? I use Chrome, and I HAVE TO empty the cache to be sure I am seeing my latest changes.

    I can’t do that though because if I want to use the same function with different criteria later then I wouldn’t be able to.

    I must be either missing something or doing something wrong but I need to be able to manipulate the container via the function arguments.

    All of that is ignoring my want to not manipulate the API functions for the obvious reason that one change can be quite destructive if a mistake is made.

    chreo at wp
    Member

    @chreo-at-wp

    I just had another thought: if ‘makin’ is the default menu for the theme, you don’t have an assigned menu!
    In that case, what you need to do is go to menus in the dashboard and create a new one that duplicates what ‘makin-default’ does and assign that to Primary.
    If you can’t fix it with <?php wp_nav_menu( array( 'container' => '' ) ); ?> after that, something is seriously wrong.

    esmi
    Forum Moderator

    @esmi

    I’ve just tested wp_nav_menu( array( 'theme_location' => 'primary', 'container' => false ) ); and it’s working fine for me. No enclosing container.

Viewing 15 replies - 1 through 15 (of 33 total)
  • The topic ‘Nav Menu, Remove Container’ is closed to new replies.