Tutoriales de WordPress de Confianza, cuando más los necesitas.
Guía para Principiantes de WordPress
Copa WPB
25 Millones+
Sitios web que usan nuestros plugins
16+
Años de experiencia en WordPress
3000+
Tutoriales de WordPress de expertos

Cómo agregar elementos personalizados a menús específicos de WordPress

¿Quieres agregar elementos personalizados a menús específicos de WordPress?

Los menús de WordPress son menús de navegación que se muestran en la parte superior de la mayoría de los sitios web. A veces, es posible que desees mostrar elementos personalizados además de enlaces simples en los menús de navegación.

En este artículo, te mostraremos cómo agregar fácilmente elementos personalizados a menús específicos de WordPress.

Agregar elementos personalizados a menús de WordPress

Por qué agregar elementos personalizados a los menús de WordPress

Los menús de WordPress son enlaces de navegación que generalmente se muestran en la parte superior de un sitio web. En dispositivos móviles, a menudo se muestran al tocar un ícono de menú.

menú de navegación de ejemplo

Dado que esta es una ubicación prominente en el diseño típico de un sitio web de WordPress, es inteligente aprovecharla colocando elementos personalizados además de enlaces simples en el menú.

Por ejemplo, algunos usuarios pueden querer mostrar el formulario de búsqueda como lo hacemos en WPBeginner. Un sitio web de membresía puede querer mostrar enlaces de inicio y cierre de sesión, o es posible que desees agregar íconos o imágenes a tu menú.

Por defecto, los menús de navegación están diseñados para mostrar enlaces de texto simple. Sin embargo, aún puedes colocar elementos personalizados en los menús de WordPress.

Dicho esto, veamos cómo puedes agregar elementos personalizados a menús específicos en WordPress manteniendo el resto de tu menú de navegación intacto.

Agregar elementos personalizados a menús de navegación específicos en WordPress

Hay diferentes maneras de agregar elementos personalizados a un menú de navegación en WordPress. Depende del tipo de elemento personalizado que estés intentando agregar.

Te mostraremos algunos de los ejemplos más comunes. Necesitarás usar plugins para algunos de ellos, mientras que otros requerirán que agregues algo de código.

Si deseas saltar a una sección específica, puedes usar esta tabla de contenido:

Empecemos.

1. Agregar una ventana emergente de búsqueda en el menú de WordPress

Normalmente, puedes agregar un formulario de búsqueda a la barra lateral de tu WordPress usando el widget o bloque de Búsqueda predeterminado. Sin embargo, no hay forma de agregar búsqueda al menú de navegación de forma predeterminada.

Algunos temas de WordPress tienen una opción para agregar un cuadro de búsqueda a tu área de menú principal. Pero si el tuyo no la tiene, puedes usar el método a continuación.

Para esto, necesitas instalar y activar el plugin SearchWP Modal Search Form. Para más detalles, consulta nuestra guía paso a paso sobre cómo instalar un plugin de WordPress.

Este plugin es un complemento para SearchWP, que es el mejor plugin de búsqueda de WordPress del mercado.

El complemento es gratuito y funcionará con la búsqueda predeterminada de WordPress también. Sin embargo, recomendamos usarlo con SearchWP si desea mejorar su búsqueda de WordPress.

Después de instalar el complemento, simplemente diríjase a la página de Apariencia » Menús. Debajo de la columna 'Agregar elementos de menú', haga clic en la pestaña 'Formularios de búsqueda modal de SearchWP' para expandirla.

Agregar búsqueda al menú

Seleccione su motor de búsqueda y luego haga clic en el botón Agregar al menú.

El plugin agregará la búsqueda a tu menú de navegación. Haz clic en el 'Formulario de búsqueda modal' debajo de los elementos de tu menú para expandirlo y cambiar la etiqueta a 'Buscar' o cualquier otra cosa que desees.

Cambiar etiqueta de búsqueda

No olvides hacer clic en el botón Guardar menú para almacenar tus cambios.

Ahora puedes visitar tu sitio web para ver 'Buscar' agregado a tu menú de navegación. Hacer clic en él abrirá el formulario de búsqueda en una ventana emergente (lightbox).

Buscar en el menú de navegación

Para más detalles, consulta nuestra guía sobre cómo agregar un botón de búsqueda a un menú de WordPress.

2. Agregar iconos e imágenes personalizadas a menús específicos

Otro elemento personalizado popular que los usuarios a menudo desean agregar a un menú específico es una imagen o un icono.

Para ello, necesitarás instalar y activar el plugin Menu Image Icon. Para más detalles, consulta nuestra guía paso a paso sobre cómo instalar un plugin de WordPress.

Tras la activación, ve a la página Apariencia » Menús y mueve el cursor sobre el elemento del menú donde deseas mostrar un icono o imagen.

Botón de imagen del menú

Haz clic en el botón azul 'Menu Image' para continuar.

Esto abrirá una ventana emergente. Desde aquí, puedes elegir una imagen o icono que se mostrará con ese elemento del menú.

Elegir imagen o ícono

También puedes elegir la posición de la imagen o icono con respecto al elemento del menú. Por ejemplo, puedes mostrar el icono justo antes del elemento del menú como en nuestro ejemplo a continuación, o incluso ocultar el título del menú para que solo se muestre el icono.

No olvides hacer clic en el botón Guardar cambios para almacenar tu configuración. Repite el proceso si necesitas agregar iconos o imágenes a otros elementos del menú.

Después de eso, puedes visitar tu sitio web para ver la imagen o el icono personalizado en elementos de menú específicos.

Íconos del menú

Para obtener instrucciones más detalladas, consulta nuestro tutorial sobre cómo agregar imágenes en los menús de WordPress.

3. Agregar enlaces de inicio/cierre de sesión a un menú específico de WordPress

Si estás utilizando un plugin de membresía de WordPress o tienes una tienda en línea, es posible que desees permitir que los usuarios inicien sesión fácilmente en sus cuentas.

Por defecto, WordPress no ofrece una forma sencilla de mostrar enlaces de inicio y cierre de sesión en los menús de navegación.

Te mostraremos cómo agregarlos usando un plugin o un fragmento de código.

1. Agregar enlaces de inicio/cierre de sesión a menús usando un plugin

Este método es más fácil y recomendado para todos los usuarios.

Primero, necesitas instalar y activar el plugin Login or Logout Menu Item. Después de eso, debes visitar la página Apariencia » Menú y hacer clic en la pestaña Inicio/Cierre de sesión para expandirla.

Agregar enlace de inicio o cierre de sesión a un menú específico de WordPress

Desde aquí, necesitas seleccionar el elemento 'Iniciar sesión|Cerrar sesión' y hacer clic en el botón Agregar al menú.

No olvides hacer clic en el botón Guardar menú para almacenar tus cambios. Ahora puedes visitar tu sitio web para ver tu enlace personalizado de inicio/cierre de sesión en acción.

Vista previa del enlace de inicio y cierre de sesión

El enlace cambiará dinámicamente a iniciar sesión o cerrar sesión dependiendo del estado de inicio de sesión del usuario.

Obtén más información en nuestro tutorial sobre cómo agregar enlaces de inicio y cierre de sesión en los menús de WordPress.

2. Agregar enlaces de inicio/cierre de sesión usando código personalizado

Este método requiere que agregues código a tu sitio web de WordPress. Si no lo has hecho antes, consulta nuestra guía sobre cómo agregar código personalizado en WordPress.

Primero, necesitas averiguar el nombre que tu tema de WordPress utiliza para la ubicación específica del menú de navegación.

La forma más fácil de encontrar esto es visitando la página Apariencia » Menús y moviendo el ratón hacia el área de ubicaciones del menú.

Encontrar el nombre de la ubicación del menú

Haz clic derecho para seleccionar la herramienta Inspeccionar y luego verás el nombre de la ubicación en el código fuente de abajo. Por ejemplo, nuestro tema de demostración utiliza primary, footer y top-bar-menu.

Anota el nombre utilizado para tu ubicación de destino donde deseas mostrar el enlace de inicio de sesión / cierre de sesión.

A continuación, deberás agregar el siguiente código a tu archivo functions.php o a un plugin específico del sitio de tu tema.

add_filter( 'wp_nav_menu_items', 'add_loginout_link', 10, 2 );
function add_loginout_link( $items, $args ) {
    if (is_user_logged_in() && $args->theme_location == 'primary') {
        $items .= '<li><a href="'. wp_logout_url() .'">Log Out</a></li>';
    }
    elseif (!is_user_logged_in() && $args->theme_location == 'primary') {
        $items .= '<li><a href="'. site_url('wp-login.php') .'">Log In</a></li>';
    }
    return $items;
}

Después de eso, puedes visitar tu sitio web y verás el enlace de inicio de sesión o cierre de sesión en tu menú de navegación.

Enlace de inicio agregado a través de código personalizado

Este enlace dinámico cambiará automáticamente a iniciar sesión o cerrar sesión según el estado de inicio de sesión del usuario.

4. Agregar texto personalizado a tu menú de navegación de WordPress

¿Qué pasa si solo quieres agregar texto y no un enlace a tu menú de navegación?

Hay dos maneras de hacerlo.

1. Agregar texto personalizado a un menú específico (la forma fácil)

Simplemente ve a la página Apariencia » Menús y agrega un enlace personalizado con el signo # como URL, y el texto que deseas mostrar como Texto del enlace.

Agregar texto personalizado con enlace de prueba

Haz clic en el botón Agregar al menú para continuar.

WordPress agregará tu texto personalizado como un elemento de menú en la columna izquierda. Ahora, haz clic para expandirlo y elimina el signo #.

Eliminar enlace

No olvides hacer clic en el botón Guardar menú y previsualizar tu sitio web. Notarás que tu texto personalizado aparece en el menú de navegación.

Sigue siendo un enlace, pero hacer clic en él no hace nada para el usuario.

texto personalizado en el menú de navegación

2. Agregar texto personalizado a un menú de navegación usando código

Para este método, agregarás un fragmento de código a tu sitio web. Primero, deberás averiguar el nombre de la ubicación de tu tema, como se describe anteriormente en la sección de enlaces de inicio de sesión/cierre de sesión.

Después de eso, necesitas agregar el siguiente código al archivo functions.php de tu tema o a un plugin específico del sitio.

add_filter( 'wp_nav_menu_items', 'your_custom_menu_item', 10, 2 );
function your_custom_menu_item ( $items, $args ) {
    if ( $args->theme_location == 'primary') {
        $items .= '<li><a title="">Custom Text</a></li>';
    }
    return $items;
}

Simplemente reemplaza donde dice 'Texto personalizado' con tu propio texto.

Ahora puedes guardar tus cambios y visitar tu sitio web para ver tu texto personalizado agregado al final de tu menú de navegación.

Este método de código puede ser útil si desea agregar programáticamente elementos dinámicos a un menú específico de WordPress.

5. Agregar la fecha actual en el menú de WordPress

¿Desea mostrar la fecha actual dentro de un menú de navegación en WordPress? Este truco es útil si tiene un blog actualizado con frecuencia o un sitio de noticias.

Simplemente agregue el siguiente código al archivo functions.php de su tema o a un plugin específico del sitio.

add_filter('wp_nav_menu_items','add_todaysdate_in_menu', 10, 2);
function add_todaysdate_in_menu( $items, $args ) {
    if( $args->theme_location == 'primary')  {
         
        $todaysdate = date('l jS F Y');
        $items .=  '<li><a>' . $todaysdate .  '</a></li>';
 
    }
    return $items;
}

No olvide reemplazar 'primary' con la ubicación de su menú.

Ahora puede visitar su sitio web para ver la fecha actual en su menú de WordPress.

Fecha actual en el menú de WordPress

También puede cambiar el formato de la fecha a su gusto. Consulte nuestro tutorial sobre cómo cambiar el formato de fecha y hora en WordPress.

6. Mostrar el nombre de usuario en el menú de WordPress

¿Quiere agregar un poco más de personalización a su menú de navegación? Puede saludar a los usuarios que han iniciado sesión por su nombre en su menú de navegación.

Primero, deberá agregar el siguiente código al archivo functions.php de su tema o a un plugin específico del sitio.

add_filter( 'wp_nav_menu_objects', 'username_in_menu_items' );
function username_in_menu_items( $menu_items ) {
    foreach ( $menu_items as $menu_item ) {
        if ( strpos($menu_item->title, '#profile_name#') !== false) {
			 if ( is_user_logged_in() )     {
				$current_user = wp_get_current_user();
				 $user_public_name = $current_user->display_name;
                $menu_item->title =  str_replace("#profile_name#",  " Hey, ". $user_public_name, $menu_item->title . "!");
			 } else { 
			 $menu_item->title =  str_replace("#profile_name#",  " Welcome!", $menu_item->title . "!");
			 }
        }
    }

    return $menu_items;
} 

Este código primero verifica si ha agregado un elemento de menú con #profile_name# como texto del enlace. Después de eso, reemplaza ese elemento de menú con el nombre del usuario que ha iniciado sesión o un saludo genérico para los usuarios que no han iniciado sesión.

A continuación, debe ir a la página Apariencia » Menús y agregar un nuevo enlace personalizado con #profile_name# como Texto del enlace.

Agregar etiqueta especial a un elemento del menú

No olvide hacer clic en el botón Guardar menú para almacenar sus cambios. Después de eso, puede visitar su sitio web para ver el nombre del usuario que ha iniciado sesión en el menú de WordPress.

Nombre de usuario en el menú de navegación de WordPress

7. Muestra menús condicionales dinámicamente en WordPress

Hasta ahora te hemos mostrado cómo agregar diferentes tipos de elementos personalizados a menús específicos de WordPress. Sin embargo, a veces podrías necesitar mostrar elementos de menú dinámicamente a los usuarios.

Por ejemplo, podrías querer mostrar un menú solo a los usuarios que han iniciado sesión. Otro escenario es cuando quieres que el menú cambie según la página que el usuario esté viendo.

Este método te permite crear varios menús y mostrarlos solo cuando se cumplen ciertas condiciones.

Primero, necesitas instalar y activar el plugin Conditional Menus. Para más detalles, consulta nuestra guía paso a paso sobre cómo instalar un plugin de WordPress.

Tras la activación, necesitas visitar la página Apariencia » Menús. Desde aquí, debes crear un nuevo menú que quieras mostrar. Por ejemplo, en este caso creamos un nuevo menú solo para usuarios registrados.

Crear nuevo menú

Después de haber creado el menú, cambia a la pestaña Administrar Ubicaciones.

Desde aquí, necesitas hacer clic en el enlace Menús Condicionales junto a la ubicación del menú.

Agregar un menú condicional

Después de eso, necesitas seleccionar el menú que creaste anteriormente del menú desplegable.

Luego, haz clic en el botón ‘+ Condiciones’ para continuar.

Seleccionar el menú que deseas mostrar

Esto abrirá una ventana emergente.

Desde aquí, puedes seleccionar las condiciones que deben cumplirse para mostrar este menú.

Elegir condiciones

El plugin ofrece una gran cantidad de condiciones para elegir. Por ejemplo, puedes mostrar el menú basándote en una página específica, categoría, tipo de publicación, taxonomía y más.

También puedes mostrar diferentes menús basándote en roles de usuario y estado de inicio de sesión. Por ejemplo, puedes mostrar un menú diferente a los miembros existentes en un sitio web de membresía.

Esperamos que este artículo te haya ayudado a aprender cómo agregar elementos personalizados a menús específicos de WordPress. También te puede interesar nuestra guía sobre cómo elegir el mejor software de diseño web, o nuestra comparación experta del mejor software de chat en vivo para pequeñas empresas.

Si te gustó este artículo, suscríbete a nuestro canal de YouTube para obtener tutoriales en video de WordPress. También puedes encontrarnos en Twitter y Facebook.

Descargo de responsabilidad: Nuestro contenido es compatible con el lector. Esto significa que si haces clic en algunos de nuestros enlaces, podemos ganar una comisión. Consulta cómo se financia WPBeginner, por qué es importante y cómo puedes apoyarnos. Aquí está nuestro proceso editorial.

El Kit de herramientas definitivo para WordPress

Obtén acceso GRATUITO a nuestro kit de herramientas: ¡una colección de productos y recursos relacionados con WordPress que todo profesional debería tener!

Interacciones del lector

65 CommentsLeave a Reply

  1. Me gusta la implementación de la búsqueda, donde en lugar del campo vacío clásico, hay una ventana emergente. Parece una buena solución. También me interesaron la fecha y la personalización del usuario conectado. Gracias por la inspiración.

  2. Hola,
    muchas gracias por ese código. ¿Hay alguna forma de reordenar el MENÚ? Por ejemplo, quiero tener el botón de Iniciar sesión / Cerrar sesión primero en el MENÚ. Solo como ejemplo.
    Saludos,
    Denis

    • Por el momento, con este código, no tenemos un método sencillo para reordenar dónde se colocan las adiciones en comparación con los elementos del menú en este momento.

      Administrador

    • ¡Estoy seguro de que esto es demasiado tarde para Denis! Pero en caso de que alguien más quiera que su elemento de menú aparezca PRIMERO en la lista de elementos del menú, en lugar de ÚLTIMO, aquí hay un ejemplo de código que he usado para este propósito:

      add_filter( ‘wp_nav_menu_items’, ‘your_custom_menu_item’, 10, 2 );
      function your_custom_menu_item ( $items, $args ) {
      if (is_single() && $args->theme_location == ‘primary’) {
      $oldItems = $items;
      $items = ‘Show whatever’;
      $items .= $oldItems;
      }
      return $items;
      }

  3. Hola,

    ¿Cómo puedo agregar un formulario de búsqueda al principio de la lista de elementos del menú?

    Gracias,

    Saurabh

    PS: big fan of your tuts :)

  4. Esto es genial. ¿Pero sería posible agregar un menú dentro de un menú?
    Quiero añadir un menú de idiomas a mi menú principal.
    Obtengo el menú de idiomas en la página pero no en el lugar deseado.

    en lugar de

  5. ¿Este código todavía funciona? No veo nada en mi menú, incluso usando la función básica con texto. No estoy usando ningún tipo especial de menú, solo 'X' y tema hijo.

    • olvídalo, lo siento, acabo de leer esto: "Obviamente, necesitas tener el menú personalizado habilitado en tus temas antes de poder continuar."

      • OK, todavía tenía el problema a pesar de que mi menú era personalizado, y jugué hasta que eliminé la condición. (SI), una vez que lo hice, se mostró en todas las páginas, incluida la página de inicio.

        `add_filter( ‘wp_nav_menu_items’, ‘your_custom_menu_item’, 10, 2 );
        function your_custom_menu_item ( $items, $args ) {
        $items .= ‘Mostrar lo que sea’;
        return $items;
        }

    • 10 especifica el orden en que se ejecutan las funciones asociadas con una acción particular. Los números más bajos corresponden a una ejecución anterior, y las funciones con la misma prioridad se ejecutan en el orden en que se agregaron a la acción.

      2 es para el número de argumentos que acepta la función.

      Administrador

  6. Este es un tutorial genial y directo al grano. Quiero un elemento con la fecha de hoy ("titulares | DATE") en uno de mis menús.

    I didn’t expect the first posting I found to solve my problem :) thx guys.

  7. funciona pero (lol) para mi situación quiero agregar "Buscar" al encabezado principal como si fuera solo otro elemento que se marcó en

    appearance/menus/add-to-menu

    Todo lo que he visto crea un nuevo… ¿qué es, un div… (?)

    que agrega una fila completamente nueva al encabezado en lugar de colocar el formulario en la misma fila que los elementos ABOUT, etc. en la ventana de edición de navegación principal.

    Y toma el CSS asignado a la barra de navegación.

  8. Me gustó mucho la publicación, muy útil. Sin embargo, digamos que quiero agregar un enlace de inicio de sesión y cierre de sesión en el pie de página con una condición 'si'

  9. Pregunta relacionada: ¿cómo agregar un elemento de menú basado en un rol de usuario específico?
    Supongamos que tengo un rol de usuario personalizado llamado "Estudiante" y me gustaría agregar un elemento al menú solo cuando el usuario tenga el rol de "Estudiante".

  10. ¡Gracias por el tutorial!

    Para ser honesto, no entiendo cómo llamas a la función.

    Especialmente echo de menos una mención de con qué argumentos llamas a las funciones, es decir, qué variables de wp pasar como $items y $args.

    ¿Podrías detallar para un principiante de wp?

    Gracias,

    Gerrit

  11. En tus ejemplos, agregas elementos al menú principal (theme_location == ‘primary’)

    ¿Cómo agregaría un elemento en un menú específico en un área de widgets? ¿Dónde obtengo la theme_location?

  12. ¡Hola! Usé tu tutorial para poner una imagen como logo superpuesta a la barra de menú. Todo está bien, pero este menú específico tiene una opción de 'hover' que hace que el color sea blanco… Así que cuando paso el ratón sobre el logo, también se activa el enlace, lo que arruina un poco el aspecto de la página.

    Este es mi código:

    if( $args->theme_location == ‘primary’ )
    return ““.$items;

    ¿Cómo puedo ocultar el 'a href' en la página y solo mostrar la imagen con el enlace?

    Gracias de antemano

  13. Hola, creo que tu código está cerca de lo que busco, ¡pero estoy tratando de averiguar cómo puedo personalizarlo para hacer lo que intento hacer!

    Lo que intento hacer es crear un elemento de menú con una lista desplegable de autores. ¿Alguna idea de cómo puedo lograr eso?

    ¡Muchas gracias!

  14. Gracias, esto fue muy útil,

    Sin embargo, por curiosidad, no encuentro este valioso 'filter hook': “‘wp_nav_menu_items” , quiero decir, ¿dónde en los archivos principales de WP se llama esto?

    ¡Muchas gracias!

      • Agregué lo siguiente a functions.php de mi tema, pero el cuadro de búsqueda no aparece como esperaba. ¿Alguna sugerencia?

        add_filter(‘wp_nav_menu_items’,’add_search_box_to_menu’, 10, 2);
        function add_search_box_to_menu( $items, $args ) {
        if( $args->theme_location == ‘header_extras_inner’ )
        return $items.””;

        return $items;

  15. Lamento unirme a esta discusión tan tarde

    He probado la parte del formulario de búsqueda y funciona muy bien, ¡gracias! Sin embargo, tengo problemas para darle estilo por alguna razón. No importa lo que haga, el texto del marcador de posición en el campo es gris. He revisado la cascada de los estilos y he modificado tantas cosas que puedo cambiar el color de fondo, por ejemplo, pero no he logrado que el texto sea negro, por lo que la continuidad del diseño del menú se ve algo comprometida. Mi sitio es http://elliottwall.com si quieres echarle un vistazo. Saludos

  16. Hola,

    ¡Muy interesante!
    Añadí un enlace personalizado, pero ¿es posible añadirlo en una posición determinada dentro del menú? Como “después del primer elemento del menú”.

    Gracias

Deja una respuesta

Gracias por elegir dejar un comentario. Ten en cuenta que todos los comentarios son moderados de acuerdo con nuestra política de comentarios, y tu dirección de correo electrónico NO será publicada. Por favor, NO uses palabras clave en el campo del nombre. Tengamos una conversación personal y significativa.