Compruebe si los elementos de wp_nav_menu tienen submenús

2

Estoy buscando la salida del siguiente marcado para un menú a través de wp_nav_menu,

<ul>
        <li><a href="/">Home</a></li>
        <li>
            <a href="/" aria-haspopup="true">Blog</a>
            <ul>
                <li><a href="/">Design</a></li>
                <li><a href="/">HTML</a></li>
                <li><a href="/">CSS</a></li>
                <li><a href="/">JavaScript</a></li>
            </ul>
        </li>
</ul>

Los elementos del menú pueden tener submenús; si ese es el caso, el enlace de nivel superior debe formatearse como en el ejemplo anterior. He probado diferentes soluciones buscando el códice pero sin éxito. Parece que tendré que crear un andador para esto a menos que quiera agregar un montón de consultas (ejecutar bucles de submenú dentro de un bucle principal). Pero como es un cambio tan pequeño, ¿no sería posible agregar un gancho de filtro en la salida del menú?

    
pregunta Staffan Estberg 14.07.2014 - 12:07

1 respuesta

8

Si entiendo correctamente, desea que los enlaces con submenús tengan un atributo de aria-haspopup . Si esto es correcto, debería poder hacerlo usando el filtro nav_menu_link_attributes (WP 3.6 y superior). También puede evitar la necesidad de tener que escribir un Walker personalizado para verificar si un elemento tiene hijos al verificar sus clases de CSS en el filtro.

add_filter( 'nav_menu_link_attributes', 'wpse154485_add_aria_haspopup_atts', 10, 3 );
function wpse154485_add_aria_haspopup_atts( $atts, $item, $args ) {
  if (in_array('menu-item-has-children', $item->classes)) {
    $atts['aria-haspopup'] = 'true';
  }
  return $atts;
}
    
respondido por el nothingtosee 14.07.2014 - 13:16

Lea otras preguntas en las etiquetas