The customize_nav_menu_available_items WordPress PHP filter allows you to modify the available menu items in a WordPress navigation menu.
Usage
add_filter('customize_nav_menu_available_items', 'your_custom_function', 10, 4);
function your_custom_function($items, $object_type, $object_name, $page) {
// your custom code here
return $items;
}
Parameters
- $items (array) – The array of menu items.
- $object_type (string) – The object type.
- $object_name (string) – The object name.
- $page (int) – The current page number.
More information
See WordPress Developer Resources: customize_nav_menu_available_items
Examples
Add a custom menu item
Add a custom menu item to the available menu items.
add_filter('customize_nav_menu_available_items', 'add_custom_menu_item', 10, 4);
function add_custom_menu_item($items, $object_type, $object_name, $page) {
$custom_item = array(
'title' => 'Custom Item',
'url' => 'https://example.com/custom-item',
'type' => 'custom',
);
$items[] = (object) $custom_item;
return $items;
}
Remove all posts from available menu items
Remove all posts from the available menu items.
add_filter('customize_nav_menu_available_items', 'remove_posts_from_menu_items', 10, 4);
function remove_posts_from_menu_items($items, $object_type, $object_name, $page) {
return array_filter($items, function($item) {
return $item->type !== 'post_type' || $item->object !== 'post';
});
}
Filter menu items by title
Filter available menu items by title containing the word “Featured”.
add_filter('customize_nav_menu_available_items', 'filter_menu_items_by_title', 10, 4);
function filter_menu_items_by_title($items, $object_type, $object_name, $page) {
return array_filter($items, function($item) {
return strpos($item->title, 'Featured') !== false;
});
}
Sort menu items alphabetically
Sort available menu items alphabetically by title.
add_filter('customize_nav_menu_available_items', 'sort_menu_items_alphabetically', 10, 4);
function sort_menu_items_alphabetically($items, $object_type, $object_name, $page) {
usort($items, function($a, $b) {
return strcmp($a->title, $b->title);
});
return $items;
}
Limit the number of available menu items
Limit the number of available menu items to 10.
add_filter('customize_nav_menu_available_items', 'limit_available_menu_items', 10, 4);
function limit_available_menu_items($items, $object_type, $object_name, $page) {
return array_slice($items, 0, 10);
}