Remover envoltorio de la salida wp_nav_menu

2 minutos de lectura

Estoy tratando de eliminar el contenedor de la función wp_nav_menu().

Pasé contenedor => falso a la matriz de argumentos y agregué un gancho en mi functions.php, pero aún muestra el envoltorio.

function my_wp_nav_menu_args( $args )
{
    $args['menu'] = false;
    $args['menu_class'] = false;
    $args['container'] = false;
    $args['container_class'] = false;
    $args['show_home'] = true;

    return $args;
}

¿Alguna idea de por qué?

avatar de usuario
daveaspinall

Lectura del códice: Referencia de función/menú de navegación wp

Es posible que deba configurar la ubicación del tema en su archivo functions.php y luego asignarle su menú.

Esto es lo que dice el códice:

Para eliminar el contenedor de navegación, la ubicación del tema especificada en functions.php y utilizada entre los argumentos en la función wp_nav_menu (por ejemplo, ‘theme_location’ => ‘primary-menu’) debe tener un menú asignado en la administración. De lo contrario, se ignora el argumento ‘contenedor’ => ‘falso’.

Si necesita registrar una ubicación, puede usar lo siguiente:

// This theme uses wp_nav_menu() in one location.
register_nav_menus( array(
    'primary' => __( 'Primary Navigation', 'Your_Theme' ),
) );

Luego pásalo en el wp_nav_menu() función

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

¡Espero que esto ayude!

Pasé nulo al contenedor y el menú no está envuelto en la etiqueta div.

wp_nav_menu(
    array('menu' => 'Bočni',
        'container' => null
    )
);

Creo que el tipo de datos booleano no está disponible para estos parámetros, lea esto Referencia de función/menú de navegación wp

Entonces, la mejor manera de eliminar este contenedor div, reemplazarlo con ul, como este ejemplo

wp_nav_menu( array(
  'menu' => 'header-nav_menu',
  'theme_location'    => 'header-nav_menu',
  'container'         => 'ul', //To replace div wrapper with ul 
  'menu_class'        => 'YOUR CLASS'//Add classes to your ul
 )
);

wp_nav_menu(array(
    'container' => '',
    'items_wrap' => '<ul id="%1$s" class="%2$s">%3$s</ul>',
    'theme_location' => 'footer-1',
));

Un menú existente debe estar asociado a su ubicación (‘pie de página-1’ en mi ejemplo), de lo contrario, siempre hay un contenedor div.

En mi caso "container" => false no funciona, solo funciona cuando escribes
"items_wrap" => "%3$s" pero elimina todas las envolturas, incluidas <ul> si quieres eliminar <div> y tenga su menú envuelto en <ul> Recomiendo hacerlo de esta manera.

wp_nav_menu(array(
    'theme_location'  => 'header_menu',
    'menu'            => 'header_menu',
    'items_wrap'      => '<ul>%3$s</ul>',
    'container'       => false,
    'menu_class'      => 'nav',
    'list_item_class' => 'nav-item',
    'link_class'      => 'nav-link',
    'menu_id' => 'menu-main-menu'
));

¿Ha sido útil esta solución?