Home » Hooks » wp_nav_menu_objects

The WordPress hook "wp_nav_menu_objects" is a dynamic hook that allows developers to modify the list of menu items before they are displayed in a navigation menu.

By default, when a menu is created in WordPress, it retrieves a list of menu items from the database and processes them to generate the navigation menu HTML. The "wp_nav_menu_objects" hook provides developers with the ability to intervene in this process and modify the menu items as per their specific requirements.

This hook is particularly useful when you need to manipulate the menu items dynamically based on certain conditions or add custom functionality to the navigation menu. For example, you can use this hook to:

  1. Add custom CSS classes or attributes to specific menu items based on the user’s role or login status.
  2. Exclude certain menu items from being displayed based on dynamic conditions.
  3. Modify the URLs or labels of menu items based on specific logic.

To use the "wp_nav_menu_objects" hook, you need to add a custom function in your theme’s functions.php file or in a custom plugin. Here’s an example code snippet demonstrating the usage of this hook:

function modify_menu_items($items, $args) {
    // Modify the $items array here based on your requirements
    // For example, add a custom CSS class to the third menu item
    if(isset($items[2])) {
        $items[2]->classes[] = 'custom-class';

    return $items;
add_filter('wp_nav_menu_objects', 'modify_menu_items', 10, 2);

In this example, we define a function named "modify_menu_items" that accepts two parameters: $items and $args. The $items parameter represents the array of menu items, and the $args parameter contains the arguments passed to the "wp_nav_menu" function.

Within the function, we check if the third menu item exists in the $items array using the isset() function. If it does, we add a custom CSS class "custom-class" to it by appending the class to the classes property of the menu item object.

Finally, we use the "add_filter" function to attach our custom function to the "wp_nav_menu_objects" hook. The last two parameters of the "add_filter" function define the priority (10) and the number of arguments (2) our function accepts.

By utilizing the "wp_nav_menu_objects" hook, developers can easily customize the behavior and appearance of navigation menus in WordPress, enhancing the overall user experience and functionality of their website.

Learn More on WordPress.org

Register an account to save your snippets or go Pro to get more features.