WordPress. Agregar elemento de menú manualmente en wp_nav_menu

3 minutos de lectura

avatar de usuario
usuario1441797

En mi tema hay una función para los menús de navegación.

function ct_nav() {
  <nav>
     <?php wp_nav_menu( array( 'container_id' => 'nav', 'theme_location' => 'primary') ); ?>
  </nav>
}

¿Cómo podría agregar más artículos manualmente? utilizando solo esta función.

  • ¿Por qué no simplemente agrega el marcado usted mismo después de la llamada a la función?

    – Joseph Silber

    11 de septiembre de 2012 a las 2:56

  • Sí, no entiendo lo que quieres decir, ¿puedes agregar elementos manualmente dentro del marcado que tienes arriba? ¿Qué estás tratando de agregar exactamente?

    – cseda

    11 de septiembre de 2012 a las 4:11

function add_last_nav_item($items) {
  return $items .= '<li><a href="#myModal" role="button" data-toggle="modal">Contact</a></li>';
}
add_filter('wp_nav_menu_items','add_last_nav_item');

  • ¿Puede alguien ayudarme a aparecer igual solo en el menú móvil? gracias de antemano

    – Preetham Hegde

    21 de enero de 2019 a las 12:39

  • Hola, ¿Puedes explicar más lo que quieres que aparezca en el móvil?

    – dijo Erraoudy

    21 de enero de 2019 a las 14:14

  • @PreethamHegde En general, si desea que algo aparezca en el móvil en wordpress, puede usar: / } más { / Incluir/mostrar recursos destinados a equipos portátiles/de escritorio aquí */ } ?>

    – dijo Erraoudy

    21 de enero de 2019 a las 14:20

  • @SaidErraoudy con su ejemplo, ¿cómo podemos orientar un elemento específico por su título? en lugar de por toda la línea html? Me gustaría configurar una condición dentro de su función.

    – klewis

    28 de octubre de 2019 a las 14:29

  • Para aquellos que obtienen un error de seguimiento Uncaught ArgumentCountError. Extienda el parámetro de add_filter con 10 y 2. Entonces se verá así. add_filter('wp_nav_menu_items','add_last_nav_item', 10, 2);

    – Motor

    26 de marzo a las 12:59

aquí hay un ejemplo al cambiar items_wrap.

wp_nav_menu( array( 'items_wrap' => '<ul id="%1$s" class="%2$s"><li><a href="http://www.google.com">go to google</a></li>%3$s</ul>' ) );

simplemente tomó el valor predeterminado y agregó el href.

  • Vaya, eso es un truco sucio. Aunque funciona 🙈

    – Eduardo

    5 de diciembre de 2018 a las 9:59

  • @Edward, lamentablemente, eso no es un truco, ni tampoco lo es Said Erraoudy soultion, está proporcionando una plantilla, no hay nada raro en eso, WP simplemente eligió aquí una manera muy, MUY desafortunada de cómo hacerlo: esta parte y todo el menú de navegación. php es un código muy “heredado” de WP…

    – jave.web

    24 de noviembre de 2019 a las 0:04

Solo por el caso de que alguien necesite esto:

Los elementos del menú se pueden agregar manualmente aplicando filtros:

  • wp_nav_menu_items – para todos los menús
  • wp_nav_menu_{$menu->slug}_items – para menú con slug particular

También al cambiar items_wrappor ejemplo, eliminando <ul> y agregarlo explícitamente en el tema; de esta manera, podrá agregar elementos propios.

  • Esto requiere que ya se haya asignado un menú a la ubicación del menú. ¿Hay alguna manera de hacer esto sin que se asigne un menú (en Apariencias> Menús)? Esto sería útil para el trabajo multisitio que estoy haciendo.

    – razón

    8 de diciembre de 2015 a las 10:08

Ninguna de las respuestas anteriores funcionó para mí. Este es un tipo de jquery de solución que utilicé. Necesitaba agregar una imagen al final de mi menú.

Use wp_nav_menu() como de costumbre, asegúrese de especificar una clase en menu_class o puede especificar una ID.

$items = array(
    'theme_location'  => 'header-menu',
    'menu'            => '',
    'container'       => 'div',
    'container_class' => 'menu-{menu slug}-container',
    'container_id'    => '',
    'menu_class'      => 'menuContainer', /* important, since we're targetting it with jquery*/
    'menu_id'         => '',
    'echo'            => true,
    'fallback_cb'     => 'wp_page_menu',
    'before'          => '',
    'after'           => '',
    'link_before'     => '',
    'link_after'      => '',
    'depth'           => 0,
    'walker'          => ''
);
wp_nav_menu($items);

$( document ).ready(function() {
            $(".menuContainer ul").append("<li><img src="https://stackoverflow.com/questions/12361934/<?php echo  get_template_directory_uri(); ?>/img/menuImage.png"></li>");
        });

¿Ha sido útil esta solución?