Encontrei uma solução neste site através do uso de um andador personalizado .
Duas etapas: substitua o código padrão wp_nav_menu por um código editado e adicione código ao functions.php do tema.
Primeiro, substitua o wp_nav_code padrão pelo seguinte (o código é copiado do site acima):
wp_nav_menu( array(
'menu' => 'Main Menu',
'container' => false,
'menu_class' => 'nav',
'echo' => true,
'before' => '',
'after' => '',
'link_before' => '',
'link_after' => '',
'depth' => 0,
'walker' => new description_walker())
);
Em seguida, adicione o seguinte código ao functions.php. Ao fazer isso, você pode realmente adicionar uma classe aos links do menu:
class description_walker extends Walker_Nav_Menu
{
function start_el(&$output, $item, $depth, $args)
{
global $wp_query;
$indent = ( $depth ) ? str_repeat( "\t", $depth ) : '';
$class_names = $value = '';
$classes = empty( $item->classes ) ? array() : (array) $item->classes;
$class_names = join( ' ', apply_filters( 'nav_menu_css_class', array_filter( $classes ), $item ) );
$class_names = ' class="'. esc_attr( $class_names ) . '"';
$output .= $indent . '<li id="menu-item-'. $item->ID . '"' . $value . $class_names .'>';
$attributes = ! empty( $item->attr_title ) ? ' title="' . esc_attr( $item->attr_title ) .'"' : '';
$attributes .= ! empty( $item->target ) ? ' target="' . esc_attr( $item->target ) .'"' : '';
$attributes .= ! empty( $item->xfn ) ? ' rel="' . esc_attr( $item->xfn ) .'"' : '';
$attributes .= ! empty( $item->url ) ? ' href="' . esc_attr( $item->url ) .'"' : '';
$prepend = '<strong>';
$append = '</strong>';
$description = ! empty( $item->description ) ? '<span>'.esc_attr( $item->description ).'</span>' : '';
if($depth != 0)
{
$description = $append = $prepend = "";
}
$item_output = $args->before;
$item_output .= '<a'. $attributes .'>';
$item_output .= $args->link_before .$prepend.apply_filters( 'the_title', $item->title, $item->ID ).$append;
$item_output .= $description.$args->link_after;
$item_output .= '</a>';
$item_output .= $args->after;
$output .= apply_filters( 'walker_nav_menu_start_el', $item_output, $item, $depth, $args );
if ($item->menu_order == 1) {
$classes[] = 'first';
}
}
}
No final do código, há várias linhas que começam com $ item_output. Em particular, você quer olhar para esta peça:
$item_output .= '<a'. $attributes .'>';
Porque esta linha determina a saída para o início do link html. Se você mudar para algo assim:
$item_output .= '<a'. $attributes . 'class="abc"' .'>';
Todos os seus links no menu terão class = "abc" adicionado a eles.
Dito isto, ele não permite uma classe personalizada para cada link (ou pelo menos eu não sei como codificá-lo). Este é um problema para mim.
Para aqueles que perguntam por que você quer fazer isso? Desejo que meus links de menu abram as caixas de luz (caixas de cores, para ser mais específico), e eles exigem classes nos links para fazer isso. Por exemplo:
<a class="lightbox1" href="#">Photo</a>
Existe possivelmente uma maneira de gerar dinamicamente as classes, como "lightbox1" para o primeiro link, "lightbox2" para o segundo link e assim por diante?