Agregar clases personalizadas a enlaces en wp_nav_menu
Quiero agregar una clase personalizada a los enlaces en las salidas de wp_nav_menu
.
Por defecto, por ejemplo es:
<li id="menu-item" class="menu-item menu-item-type-custom">
<a href="http://example.com">ejemplo</a>
</li>
Quiero esto:
<li id="menu-item" class="menu-item menu-item-type-custom ">
<a href="http://example.com" class="class">ejemplo</a>
</li>

Puedes hacer esto con el filtro nav_menu_link_attributes
.
add_filter( 'nav_menu_link_attributes', 'wpse156165_menu_add_class', 10, 3 );
function wpse156165_menu_add_class( $atts, $item, $args ) {
$class = 'class'; // o algo basado en $item
$atts['class'] = $class;
return $atts;
}

¿Cómo podría acomodar múltiples atts
diferentes dentro del anchor? Es decir, no solo agregar clases sino también añadir aria-expanded="false"
?

Tengo una mejor solución https://stackoverflow.com/a/67859550/9207553

Tengo una solución para añadir una clase a la etiqueta de anclaje.
1: Paso: añade esto en functions.php
function add_additional_class_on_a($classes, $item, $args)
{
if (isset($args->add_a_class)) {
$classes['class'] = $args->add_a_class;
}
return $classes;
}
add_filter('nav_menu_link_attributes', 'add_additional_class_on_a', 1, 3);
2: Luego utilízalo así en tu tema
<?php
// Mostrar menú aquí
wp_nav_menu(array(
'theme_location' => 'my-footer-menu',
'menu_class' => 'footer-top list-unstyled',
'add_a_class' => 'box-link text-dark',
));
?>

Puedes añadir clases de forma nativa mediante la interfaz en el administrador. Abre Opciones de pantalla
(en la parte superior derecha de la pantalla) y marca Clases CSS
. No recuerdo si la clase se aplica al enlace en sí, pero siempre puedes seleccionar el enlace dentro del contenedor con CSS (.clase a
).

add_filter( 'nav_menu_link_attributes', 'wpse156165_menu_add_class', 10, 3 );
function wpse156165_menu_add_class( $classes, $item, $args ) {
if(isset($args->add_link_class)) {
$classes['class'] = $args->add_link_class;
}
return $classes;
}
Ahora puedes usar add_link_class
como un array en los menús.
