Si observa la implementación de la WP_Nav_Menu_Widgetclase, verá el siguiente código:
function widget($args, $instance) {
    // Get menu
    $nav_menu = ! empty( $instance['nav_menu'] ) ? wp_get_nav_menu_object( $instance['nav_menu'] ) : false;
    if ( !$nav_menu )
        return;
    $instance['title'] = apply_filters( 'widget_title', empty( $instance['title'] ) ? '' : $instance['title'], $instance, $this->id_base );
    echo $args['before_widget'];
    if ( !empty($instance['title']) )
        echo $args['before_title'] . $instance['title'] . $args['after_title'];
    wp_nav_menu( array( 'fallback_cb' => '', 'menu' => $nav_menu ) );
    echo $args['after_widget'];
}
Significa que no hay ninguna posibilidad de conectar un menú. Por lo tanto, debe echar un vistazo a la wp_nav_menuimplementación de funciones, donde puede encontrar las siguientes líneas de código:
$defaults = array(
  'menu' => '',
  'container' => 'div',
  'container_class' => '',
  'container_id' => '',
  'menu_class' => 'menu',
  'menu_id' => '',
  'echo' => true,
  'fallback_cb' => 'wp_page_menu',
  'before' => '',
  'after' => '',
  'link_before' => '',
  'link_after' => '',
  'items_wrap' => '<ul id="%1$s" class="%2$s">%3$s</ul>',
  'depth' => 0,
  'walker' => '',
  'theme_location' => ''
);
$args = wp_parse_args( $args, $defaults );
$args = apply_filters( 'wp_nav_menu_args', $args );
$args = (object) $args;
Aquí puede ver que todos los argumentos pasados a la wp_nav_menufunción podrían ser reemplazados. Entonces, lo que necesita es crear su propio controlador de gancho que agregará su andador a un menú de navegación. Podría ser simple como:
function myplugin_custom_walker( $args ) {
    return array_merge( $args, array(
        'walker' => new My_Custom_Walker(),
        // another setting go here ... 
    ) );
}
add_filter( 'wp_nav_menu_args', 'myplugin_custom_walker' );
                 
                
'walker' => new Walker_Nav_Menu()en los argumentos de mi menú específico anularlo nuevamente para convertirme en el caminante predeterminado de wordpress para solo un menú, pero lamentablemente esto no funciona.Ampliando la respuesta de @ Eugene, si desea limitar esto a un menú específico, simplemente verifique el término ID del menú:
fuente
Esta es una alternativa a apuntar a un menú
term_idy pensé que podría ser útil para alguien como una forma de modificar varios menús sin tener que buscar sus identificadores.Al agregar
print_r($args)a un filtro, noté que$args['menu']es una cadena para menús en ubicaciones de tema predefinidas yWP_Term_Objectpara un widget de menú personalizado en una barra lateral.Utilicé esto para apuntar menús por slug y agregar una clase a su contenedor. Se pueden seleccionar varios menús al incluir una cadena común en sus babosas. Nota: la babosa de menú proviene de la clave de matriz
register_nav_menus().Para un solo menú, solo debe verificar eso en
$args['menu']->{slug} == 'your-slug'lugar del bit strpos () anterior.fuente
Puede agregar un andador personalizado a un menú de navegación creado en un widget utilizando el
widget_nav_menu_argsfiltro agregado en WordPress4.2.0. Acepta cuatro argumentos (verwp-includes/widgets/class-wp-nav-menu-widget.php). Pero para agregar solo un andador personalizado, solo necesita usar el primer argumento, de la misma manera que usa elwp_nav_menu_argsfiltro.fuente