Err… There’s plenty of filters on the menu system.
The ‘wp_nav_menu’ filter is called on the output of the wp_nav_menu() function call. So if you need to modify the menu output, you can use that.
The ‘wp_nav_menu_items’ filter is called on the resulting array of items (basically all the LI items).
If you need to modify the arguments passed into wp_nav_menu, such as to dynamically add your own walker, you can use the ‘wp_nav_menu_args’ filter for that.
There’s a lot more filters which are more specific and can probably be used to change things in more subtle ways. These are sorta the main club-like filters that change the whole thing.
Related Posts:
- Add Dividers or Separators Between Nav Menu Items
- PHP 7 – Class Method Compatibility Issue
- Custom code for WordPress dynamic menu
- How do I access the menus produced by Dashboard > Appearance > Menus
- Add user managable titles to custom menus?
- Adding a navigation with wp_nav_menu() to a custom block in the site editor
- add_menu_page() with different name for first submenu item
- How to add sub-menu to a menu generated by wp_nav_menu by using plugin
- Change the_title() of a page dynamically
- How do I programatically insert a new menu item?
- Nav Menu meta failing to import
- Overwriting Core WordPress Functions with Plugins
- Some nav-menu filters do nothing
- Determine which theme location a wp_get_nav_menu_items is for
- Can I add pages to my custom menu via script?
- Hook event for upload image in the menu
- Why isn’t the Settings API designed to work for plugins using custom admin menus? [duplicate]
- How do I approach removing menu items on the fly based on settings in my plugin?
- What is the difference between current_page_parent and current_page_ancestor?
- Delete a specific item menu when I deactivate my plugin
- Create a Page via plugin
- Add Submenu Link in add_submenu_page That Opens in a New Window
- How to assign a WP 3.0 custom nav menu to a theme’s navigation menu location via script?
- Header Button Chance Polylang Elementor
- How to add pages to custom menus on the fly [duplicate]
- How do I add a custom sublevel menu specified in one directory to a custom top level menu specified in another directory?
- Add notification bubble notice in navigation using transients
- Get Current Menu Location inside Nav_Walker
- Adding custom fields to WordPress nav menus
- Sub Menu content is being duplicated
- Plugin menu addition in multisite
- Remove unwanted elements for a wp_nav_menu
- Is this best practice for Dynamically adding items to WordPress menus?
- How to remove or add submenu item on plugin activate or deactive
- wordpress add_submenu_page adds broken link
- WP Enqueue style on all plug-in pages
- Add child pages to submenu automatically
- Customize existing menu item
- Menu page with minimum capability as ‘Subscriber’ doesn’t allow ‘Admin’ to access it?
- Issue with plugin sub menu and pages
- How to add Plugin functionality in WordPress Frontend Menus
- How to hide page links from theme menu
- WP_NAV_MENU filter targets all menus
- How do I add a menu item to a Pods admin menu?
- How to create archive page to add in menu
- How to show only the last two categories in a menu?
- Always hide a page from the menu
- remove different admin menu for specific users
- How to get an array out of a nav menu if it’s a plugin?
- Navigate to external link if last page or post in a category
- How can I add recent posts to menu like mashable
- What happens when you create/edit a menu
- Plugin admin list pages as submenu
- Adding parent custom post type menu option
- Create and style menu
- Change the class of wordpress menu
- How can I create a navigation menu in the sidebar that can also act like a slider?
- Invalid Menu Items
- Declaration of mandoe_menu_walker::start_el(&$output, $item, $depth, $args) must be compatible with Walker::start_el(…)
- Custom Nav Walker $item->url producing malformed hyperlinks
- Displaying an Uploaded Image as a Custom Avatar in WordPress
- Add screen options to custom admin pages
- WordPress and PHP Sessions – Security and Performance
- Must-use plugins autoloader: How to use get_plugins() correctly?
- Changing upload directory for plugin uploads only
- Plugin vs Settings load order (woocommerce dependency)
- How to not let a user with a new role edit users that have administrator role?
- async code or cron job?
- Use wp_nav_menu to display ALL pages
- WordPress not working on localhost
- Custom delete option button in plugin settings
- how to append custom metabox field with the ACF custom fields id in wordpress development
- $_FILES empty on created_{taxonomy} and create_{taxonomy} yet is is not on edit_{taxonomy}
- Storing data in wordpress database from ajax call from different website
- Hide shortcodes “code” when using the “editor” the same as wordpress do with “gallery”
- Using my WordPress menu on another platform
- How to test a WordPress plugin in real time
- Distributing Frontend Assets with Plugins
- Hook add_attachment error
- Undefined variable’s error when expected to have passed the content of variable [closed]
- How can I add rewrite rules to a class-based plugin?
- hook update_option/updated_option empty $old_value and $value
- Issues Updating Post Meta with AJAX (Seems simple but cannot figure it out)
- How to add a panel/box/widget/are/screen to the right side of edit post/page confusion
- Sharing Variables between scheduled events
- Get Posts by IDs (optionally)
- Why doesn’t my Table get created?
- Add parameters to 3rd party callback function
- How does update method in Widget class saves $instance array from Select tag?
- How can I pass WP_Query results to a plugin?
- WC_Geolocation not found inside plugin
- Set widget icon in Customizer?
- How to customize the size of Featured Images or Post Thumbnails in WordPress?
- Updating Style From WP Options Setting Page
- Plugin – Proper way to handle 404 pages?
- Custom navigation / menu output (walker?)
- Checking if the query is empty does not work
- Remove default wordpress roles
- What is the meta_query key name for the woo product average rating? [closed]
- Why my admin-ajax url returns 0 even after adding echo and die() at the end of function?