My hook_menu_alter() and page callback don't get triggered This question relates to How do I redirect a taxonomy menu item to another path?

I followed the recommendations of Clive and wrote a hook_menu_alter to provide my callback. 

function material_menu_taxonomy_page_callback($term) {
  dsm('Entered material menu callback');
}

function material_menu_menu_alter () {
  $items['taxonomy/term/%taxonomy_term']['page callback'] = 'material_menu_taxonomy_page_callback'; 
}


I placed a code line dsm("Altering"); in the callback to see where in the process the callback is being called, but it never shows up.

I am fairly certain that I have the code correct. 


The hook has the name of the custom module. 
The callback name is correct.  
the callback is in the same file as the hook
I have turned the module off and then on so that I can be sure that Drupal knows about mymodule_menu_alter 
And I have flushed the caches.


My assumption is that mymodule_menu_alter()' should change the callback in the menu item array and that the callback will be called each time the menu item is selected. That suggests that mydsm()` message should display at the top of the page requested by the menu. 

While Clive's test indicated in his answer worked, my revisions did not. Following Clive's answer recommendations I revised the code as follows.

material.info file contained in modules subdirectory = sites/all/modules/Custom/material

name = Materials  
description = Redefine the path for materials menu
package = CR-Hub
core = 7.x
; Includes
files[] = material.module


material.module file in same subdirectory

function material_taxonomy_page_callback() {
  drupal_goto('taxonomy/term/1');
  // return 'Entered material menu callback';
}

function material_menu_alter(&amp;$items) {
  // return 'Entered Material Menu Alter';
  $items['taxonomy/term/%taxonomy_term']['page callback'] = 'material_taxonomy_page_callback'; 
  return $items;
}


When I select any menu item neither drupal_goto(), or return 'any text' lines redirect the selected path from the menu item.
You haven't passed $items into the function ;)

function material_menu_menu_alter (&amp;$items) {
  $items['taxonomy/term/%taxonomy_term']['page callback'] = 'material_menu_taxonomy_page_callback'; 
}


Without that you're not actually altering anything as $items doesn't exist in a global scope.

You'll also need to clear the caches again once you've made the change.

UPDATE

Working code that I've just verified:

material.info:

name = Materials  
description = Redefine the path for materials menu
package = CR-Hub
core = 7.x
; Includes
files[] = material.module


material.module

function material_taxonomy_page_callback($term) {
  // Calling drupal_goto() here will result in an infinite loop.
  // This is the page callback for pages with a URL like taxonomy/term/1 so
  // there's no need to redirect...you're already where you need to be.
  // This function is used to build up the new page content for the taxonomy page

  // As a test just output the name of the term related to this page.
  return $term-&gt;name;
}

function material_menu_alter (&amp;$items) {
  $items['taxonomy/term/%taxonomy_term']['page callback'] = 'material_taxonomy_page_callback'; 

  // You don't need to return anything from this function as $items is passed in by reference...anything you change in that variable will be reflected in the $items var in the calling function.
}


Once installed if I go to any taxonomy page the content region contains just the name of the taxonomy term for that page (using return $term-&gt;name). If it's not working for you the only thing I can advise is to clear Drupal's caches, or check what custom/contributed modules you've got installed that might be overriding your code.