hook_menu_alter for taxonomy vocabulary My vocabularies machine name is vocab_ . $account_id .
First Funcs: too see the user $account_id is the same with vocab.. if yes then return TRUE.

function _term_account(){
  global $base_url;
  global $user;
  $account_id = custom_get_user_account_id();
  $tesr = explode('_', arg(3));
// admin/structure/taxonomy/vocab_21117 .. witch 21117 is $account_id
 if($tesr[1] == $account_id){
    return true;
 } else {
    return false;
 }
}


I use hook_menu_alter to alter the taxonomy url:    

function custom_menu_alter(&amp;$items) {
  // Works fine.. So every user has he's own and only vocabulary..
  $items['admin/structure/taxonomy/%taxonomy_vocabulary_machine_name/list']['access callback'] = '_term_account';
  // DOESN'T WORK.
  $items['admin/structure/taxonomy/%taxonomy_vocabulary_machine_name/add']['access callback'] = '_term_account';
}


UPDATE
When User edit term..

function _term_account_edit(){
    $account_id = custom_get_user_account_id();
    global $base_url;
    $term = taxonomy_term_load(arg(2));
    if($term-&gt;vocabulary_machine_name == 'branches_'.$account_id){
        return true;
    }else{
        return false;
    }
}

function custom_menu_alter(&amp;$items) {
  $items['taxonomy/term/%taxonomy_term/edit']['access callback'] = '_term_account_edit'; 
}


The Delete Button dosen't Show up? Why?
The code looks good! However, try the following:


See if there is already a permission or a module which lets you control the things you wish to control. Maybe you can mention the desired outcome or the objective in the question?
Add a dpm() or something to the end of the function to see if the $items are being modified correctly.
Add a dpm() or something in the _term_account() function to see if it is being called correctly and that it is returning TRUE or FALSE correctly as per your requirements.