I've got a custom module which I use to define some urls that are used for a json api. I don't want them to show up in the Navigation menu. How do I change my hook_menu configuration so these urls are excluded from the menu?

Here is an example of two of my menu items that I want to hide, and a third one I would like to be visible:

$items['mymodule/1/login'] = array(
    'page callback' => 'mymodule_login',
    'access callback' => TRUE,
$items['mymodule/1/signup'] = array(
    'page callback' => 'mymodule_signup',
    'access callback' => TRUE,
$items['mymodule_bulkupload'] = array(
    'title' => 'Bulk Upload',
    'page callback' => 'drupal_get_form',
    'page arguments' => array('mymoduleapi_form_bulkupload'),
    'access callback' => 'mymoduleapi_user_is_mymodule_owner',

I end up getting a bunch of empty items in my Nav menu. I would like to be able to hide those api menu items.

enter image description here

How do I control that from within hook_menu?

1 Answer 1


I think what you need is MENU_CALLBACK in 'type.

It's for hidden items like API calls that don't want to go in menus


  • I tried that and flushed the cache, to make sure it reloaded my hook_menu, but nothing changed in the menu. Commented Jul 30, 2014 at 19:47
  • Actually, disabling and re-enabling the module caused them to disappear. I guess that menu isn't re-evaluated during a cache flush. hmm. Commented Jul 30, 2014 at 19:53
  • 1
    Had the same issue: If you edit the menu, disable the item and then hit "reset" on the menu item, it will disappear too.
    – MrUpsidown
    Commented Mar 23, 2015 at 10:25
  • For see the change, is better change the url and change the type key to MENU_CALLBACK, clear cache and again change to the original url, clear cache and then it will work!
    – rpayanm
    Commented Oct 21, 2015 at 17:01

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.