# Show Menu Item Descriptions in Navigation Menus

> Prints the description you write for each menu item under its title in classic theme menus, handy for mega menus and service menus.

- Type: PHP
- Runs: Frontend only
- Category: [Page Builders & Themes](https://wpide.com/library/category/page-builders/)
- Tags: menus, navigation, classic-themes
- Author: WPIDE Team
- Installs: 0
- Updated: 2026-10-28
- Page: https://wpide.com/library/menu-item-descriptions/

## Code

```php
// Menu locations that should show descriptions (empty = all).
$wpide_menu_desc_locations = array( 'primary' );

add_filter( 'walker_nav_menu_start_el', function ( $item_output, $item, $depth, $args ) use ( $wpide_menu_desc_locations ) {
    if ( empty( $item->description ) ) {
        return $item_output;
    }

    if ( $wpide_menu_desc_locations && ( empty( $args->theme_location ) || ! in_array( $args->theme_location, $wpide_menu_desc_locations, true ) ) ) {
        return $item_output;
    }

    $description = '<span class="menu-item-description" style="display:block;font-size:.8em;opacity:.75;font-weight:normal;">' . esc_html( $item->description ) . '</span>';

    return preg_replace( '#</a>\s*$#', $description . '</a>', $item_output, 1 );
}, 10, 4 );
```

## Notes

Turn on "Description" under Screen Options in Appearance > Menus to edit descriptions. Limit it with $wpide_menu_desc_locations.

## How to use it

Install the free WPIDE plugin (https://wordpress.org/plugins/wpide/), find "Show Menu Item Descriptions in Navigation Menus" in its snippet library and add it in one click; or create a new PHP snippet in WPIDE (or any code snippets plugin) and paste the code above. More snippets: https://wpide.com/library/
