[wp-trac] [WordPress Trac] #29463: Add filter in WP_Nav_Menu_Widget

WordPress Trac noreply at wordpress.org
Tue Sep 2 09:55:11 UTC 2014

#29463: Add filter in WP_Nav_Menu_Widget
 Reporter:  cyman              |       Owner:
     Type:  enhancement        |      Status:  new
 Priority:  normal             |   Milestone:  Awaiting Review
Component:  Widgets            |     Version:  3.0
 Severity:  normal             |  Resolution:
 Keywords:  reporter-feedback  |     Focuses:  administration

Comment (by cyman):

 Thank you for a quick answer @johnbillion!

 Yes, I am aware of the `wp_nav_menu_args` filter and how to target
 specific menus with if clauses.

 However, this feels to me more a hack than elegant solution, especially in
 some cases (and I found other questioning the
 to-a-menu-created-in-a-widget|same thing elsewhere]]) when one'd like a
 specific menu classes or walker applied to all custom menus that appear in
 the sidebars.

 Example usecase: I use the Tw Bootstrap for creating the theme, so I would
 like to apply the [https://github.com/twittem/wp-bootstrap-navwalker|WP
 Bootstrap Navwalker] and some Bootstrap classes to all the sidebar menus.
 While I don't want to use the navwalker for the custom menu positions in
 my theme (for example main navigation in header and footer navigation).

 What I have to do now to achieve that is to register a new widget (which
 extends the `WP_Nav_Menu_Widget`) and define new `widget` method just to
 change the arguments of the `wp_nav_menu` function call. And then use
 `unregister_widget` to unregister default menu widget.

 It would be much easier to add a filter in a theme to change these
 arguments for the existing custom menu widget. That would also be more
 consistent how other widgets/functions in the file `default-widgets.php`
 have hooks applied, for example the `WP_Widget_Pages`:

 wp_list_pages( apply_filters( 'widget_pages_args', array(
         'title_li'    => '',
         'echo'        => 0,
         'sort_column' => $sortby,
         'exclude'     => $exclude
 ) ) );

 I hope I explained my point.

 I'll take a look at the SVN instructions (I use git daily, so I hope I
 don't have troubles) you linked to and create a patch file.

Ticket URL: <https://core.trac.wordpress.org/ticket/29463#comment:3>
WordPress Trac <https://core.trac.wordpress.org/>
WordPress publishing platform

More information about the wp-trac mailing list