2014-10-28 66 views
0

我想刪除一些基於用戶角色的菜單頁面,但是當我添加if condition裏面的功能它什麼也沒做。remove_menu_page()沒有得到初始化,如果條件

function contributor_posts_action() { 
    if ($role == 'contributor_posts') { // contributor_posts - custom role 
    // echo 'here'; for testing purposes and WORKS, so it goes under the if condition 
    add_action('admin_menu', 'remove_menus_contrib'); 
    function remove_menus_contrib(){ 
     remove_menu_page('edit-comments.php');  
     remove_menu_page('tools.php');     
     remove_menu_page('edit.php?post_type=directory');   
     remove_menu_page('edit.php?post_type=city'); 
    } // this function doesn't get hooked 

    add_action('admin_bar_menu', 'remove_admin_bar_items', 999); 
    function remove_admin_bar_items($wp_admin_bar) { 
     $wp_admin_bar->remove_node('new-directory'); 
     $wp_admin_bar->remove_node('new-city'); 
    }// this one works properly. It's for removing for admin bar. 
    } 
} 
add_action('admin_init', 'contributor_posts_action'); 
+0

你永遠不會調用函數,所以他們不會被執行! – Rizier123 2014-10-28 13:05:31

+0

@ Rizier123他們被稱爲add_action,其他人不會。另外,如果我在if條件之外添加remove-menus_contrib()函數以及它當前擁有的add_action,它就可以工作。 – user3467855 2014-10-28 13:08:09

+0

這個'$ role'來自哪裏?從'admin_init'回調中取出這些函數,只留下'add_action's。 – brasofilo 2014-10-28 13:57:39

回答

1

嘗試拉動remove_menus_contrib()add_action('admin_menu', 'remove_menus_contrib')鉤子函數出你contributor_posts_action()功能。

某些Wordpress掛鉤在其他(自定義)函數中不起作用。

+0

仍然無法正常工作,admin_bar_menu也只適用於管理欄 – user3467855 2014-10-28 13:13:44

+0

好的,你確定wordpress正在調用admin_menu嗎? – 2014-10-28 13:14:37

+0

我知道admin_menu是一個鉤子,所以應該像鉤子的其餘部分一樣調用它。 – user3467855 2014-10-28 13:15:59