2012-01-29 46 views
8

我試圖刪除wordpress管理面板上的幾個頂級菜單。奇怪的是,我從plugin.php文件中得到了一個錯誤消息,其中聲明瞭該函數,他說: 「爲foreach()提供的無效參數在C:\ wamp \ www \ wordpress-alut \ wp-admin \ includes \ 1261行「plugin.php」。 我去了文件,發現下面的代碼:wordpress函數remove_menu_page()拋出錯誤

function remove_menu_page($menu_slug) { 
    global $menu; 

    foreach ($menu as $i => $item) { // **this is line 1261** 
     if ($menu_slug == $item[2]) { 
      unset($menu[$i]); 
      return $item; 
     } 
    } 

    return false; 
} 

需要注意的是,當我使用remove_ _page(),這是在plugin.php下一個功能,我沒有得到任何這樣是很重要的錯誤。 我的功能,位於functions.php中:

add_action('admin_init', 'mf_remove_menu_pages'); 
function mf_remove_menu_pages() { 
    remove_menu_page('link-manager.php'); 
    remove_menu_page('index.php'); 
    remove_menu_page('users.php'); 
    remove_menu_page('upload.php'); 
    remove_menu_page('tools.php'); 
    remove_menu_page('edit.php'); 
    remove_menu_page('edit-comments.php'); 
    remove_menu_page('post-new.php'); 
    remove_submenu_page('themes.php','themes.php'); 
    remove_submenu_page('themes.php','theme-editor.php'); 
    remove_submenu_page('themes.php','widgets.php'); 
}; 
+0

他們最後需要'.php'嗎? – 2012-01-29 10:34:15

回答

17

$menu之前,您所呼叫mf_remove_menu_pages()實際上是設置了,也似乎是在情況下,當$menu從未成立。您需要等待admin_menu鉤子才能實際呼叫remove_menu_page()。如果你是在admin_init上做的話,那麼你使用的是錯誤的鉤子,這就是爲什麼它在AJAX請求上發揮作用

所以你需要改變你的鉤子。請嘗試這樣:

add_action('admin_menu', 'mf_remove_menu_pages'); 
function mf_remove_menu_pages() { 
    remove_menu_page('link-manager.php'); 
    remove_menu_page('index.php'); 
    remove_menu_page('users.php'); 
    remove_menu_page('upload.php'); 
    remove_menu_page('tools.php'); 
    remove_menu_page('edit.php'); 
    remove_menu_page('edit-comments.php'); 
    remove_menu_page('post-new.php'); 
    remove_submenu_page('themes.php','themes.php'); 
    remove_submenu_page('themes.php','theme-editor.php'); 
    remove_submenu_page('themes.php','widgets.php'); 
} 

希望這有助於:)

+0

是的,它的工作! thx :) – Matanya 2012-01-29 10:37:45

+0

Thx你非常,救了我太多時間 – 2013-03-24 18:40:55

+0

@sabari你是天才,它的工作就像魅力: – 2015-04-09 04:20:30

0

在WordPress中的新版本,刪除某些子頁面像theme-editor.php(或子頁面被Jetpack的插件介紹),你必須綁定到admin_menu鉤非常重視。

E.g.要刪除theme-editor.php,您需要設置約120的優先級。對於Jetpack頁面,您需要約2000

add_action('admin_menu', 'mf_remove_menu_pages', 120); 
function mf_remove_menu_pages() { 
    remove_menu_page('link-manager.php'); 
    remove_menu_page('index.php'); 
    remove_menu_page('users.php'); 
    remove_menu_page('upload.php'); 
    remove_menu_page('tools.php'); 
    remove_menu_page('edit.php'); 
    remove_menu_page('edit-comments.php'); 
    remove_menu_page('post-new.php'); 
    remove_submenu_page('themes.php','themes.php'); 
    remove_submenu_page('themes.php','theme-editor.php'); 
    remove_submenu_page('themes.php','widgets.php'); 
} 

這也是在Wordpress Codex並在Wordpress Support Forums說明。