The nav_menu_item_title filter allows you to modify a WordPress menu item’s title.
Usage
add_filter('nav_menu_item_title', 'your_custom_function', 10, 4); function your_custom_function($title, $menu_item, $args, $depth) { // your custom code here return $title; }
Parameters
$title
(string) – The menu item’s title.$menu_item
(WP_Post) – The current menu item object.$args
(stdClass) – An object ofwp_nav_menu()
arguments.$depth
(int) – Depth of menu item, used for padding.
Examples
Add an icon to a menu item
add_filter('nav_menu_item_title', 'add_icon_to_menu_item', 10, 4); function add_icon_to_menu_item($title, $menu_item, $args, $depth) { if ($menu_item->title == 'Home') { $title = '<i class="fas fa-home"></i> ' . $title; } return $title; }
This code adds a home icon to the menu item with the title ‘Home’.
Wrap menu item title in custom HTML
add_filter('nav_menu_item_title', 'wrap_menu_item_title', 10, 4); function wrap_menu_item_title($title, $menu_item, $args, $depth) { $title = "<span class='custom-menu-title'>{$title}</span>"; return $title; }
This code wraps each menu item title in a custom HTML <span>
element with the class custom-menu-title
.
Make menu item title uppercase
add_filter('nav_menu_item_title', 'uppercase_menu_item_title', 10, 4); function uppercase_menu_item_title($title, $menu_item, $args, $depth) { $title = strtoupper($title); return $title; }
This code changes the menu item title to uppercase.
Add a custom attribute to menu item title
add_filter('nav_menu_item_title', 'add_custom_attribute_to_menu_item', 10, 4); function add_custom_attribute_to_menu_item($title, $menu_item, $args, $depth) { $title = "<span data-custom-attr='example'>{$title}</span>"; return $title; }
This code adds a custom attribute data-custom-attr
with the value ‘example’ to each menu item title.
Append item depth to menu item title
add_filter('nav_menu_item_title', 'append_item_depth_to_menu_item', 10, 4); function append_item_depth_to_menu_item($title, $menu_item, $args, $depth) { $title .= " (Depth: {$depth})"; return $title; }
This code appends the menu item’s depth to the title, for example “Home (Depth: 0)”.