Sé que puede agregar una clase en las opciones del menú personalizado, pero lo agrega al LI antes del A. Quiero aplicar la clase directamente a este A específico en lugar de todo el LI.
Entonces, en lugar de que la salida sea
<li id="menu-item-51" class="NEWCLASS menu-item menu-item-type-custom menu-item-51"><a href="#">Link</a> </li>
Yo también quiero que sea así.
<li id="menu-item-51" class="menu-item menu-item-type-custom menu-item-51"><a href="#" class="NEWCLASS">Link</a></li>
¿Algunas ideas?
.class
a.class a
?<li>
elemento que lo contiene . Si tiene un submenú debajo de ese elemento en particular, no hay problema, puede abordarlo en el CSS (puedo dar ejemplos si es necesario).Respuestas:
puedes usar
nav_menu_css_class
filtroUsando este $ item puede cualquier condición que desee. y esto agregará la clase a la li específica y puede diseñar una etiqueta basada en eso de la siguiente manera:
fuente
get_page_template_slug
trabajar. ¿Algunas ideas?Encontré una solución en este sitio mediante el uso de un andador personalizado .
Dos pasos: reemplace el código predeterminado wp_nav_menu con uno editado, y luego agregue el código a functions.php del tema.
Primero, reemplace el wp_nav_code predeterminado con lo siguiente (el código se copia del sitio anterior):
A continuación, agregue el siguiente código a functions.php. Al hacer esto, puede agregar una clase a los enlaces del menú:
Hacia el final del código hay varias líneas que comienzan con $ item_output. En particular, desea ver esta pieza:
Porque esta línea determina la salida para el comienzo del enlace html. Si lo cambia a algo como esto:
Entonces todos sus enlaces en el menú tendrán class = "abc" agregado a ellos.
Dicho esto, no permite una clase personalizada para cada enlace (o al menos no sé cómo codificarlo). Este es un problema para mí.
Para aquellos que preguntan ¿por qué quieres hacer esto? Quiero que mis enlaces de menú abran cajas de luz (cajas de colores, para ser más específicos), y requieren clases en los enlaces para hacerlo. Por ejemplo:
¿Hay alguna manera de generar dinámicamente las clases, como "lightbox1" para el primer enlace, "lightbox2" para el segundo enlace, y así sucesivamente?
fuente
¡RESUELTO! Necesitaba resolver esto para hacer que el elemento del menú se vincule a HTML en línea en un fancybox. Pega el siguiente código en el function.php de tu tema:
Luego ... en la pestaña Menú del Panel de control de WP, cree un enlace personalizado y agréguelo a su menú. En la parte superior donde dice Opciones de pantalla, asegúrese de tener marcada "Relación de enlace (XFN)". Agregará ese campo a su elemento de menú personalizado. Escriba "fancybox" (sin comillas) en el campo y guarde su menú.
La función busca la llamada al menú de navegación, luego encuentra donde tenga a
rel="fancybox"
y la reemplaza con arel="fancybox" class="fancybox"
. Puede reemplazar fancybox con cualquier clase que necesite agregar a sus elementos de menú. ¡Hecho y hecho!fuente
Las respuestas actuales no parecen reconocer que la pregunta es cómo agregar una clase al
a
elemento y no elli
elemento, o son demasiado complicadas. Aquí hay un enfoque simple que utiliza elnav_menu_link_attributes
filtro que le permite orientar un menú específico en función de su slug y un enlace de página específico en ese menú en función de su ID. Puede var_dump $ args y $ item para obtener más formas de crear su condición.fuente
if
queif ($args->theme_location == 'footer-menu' )
mire a escondidas el menú por su ubicación, y todo funciona muy bienSé que esto fue respondido hace mucho tiempo, pero solo como información general, encontré cómo agregar una clase a cada elemento del menú individualmente usando la opción "Pantalla" de la página de administración de WordPress para menús personalizados.
fuente
Tuve que hacer algo similar recientemente y descubrí otra forma. Tuve que agregar una clase similar para un complemento de Nivo lightbox. Así que agregué "nivo" al atributo rel ("Relación de enlace (XFN)") y luego lo siguiente en el
nav_menu_link_attributes
filtro.fuente
En el área superior de la
Appearance -> Menus
página, haga clic para expandirScreen Options
, marque la casilla de verificación deCSS Classes
. Ahora, cuando expanda cada uno de los elementos de menú agregados, verá unCSS Classes (optional)
campo.fuente