2012-01-29 16 views
8

Próbuję usunąć kilka menu najwyższego poziomu na panelu administracyjnym wordpress. Co dziwne, otrzymuję komunikat o błędzie z pliku plugin.php, w którym deklarowana jest funkcja, która mówi: "Niepoprawny argument dostarczony dla foreach() w C: \ wamp \ www \ wordpress-alut \ wp-admin \ includes \ plugin.php on line 1261 ". poszedłem do pliku i znaleźć następujący kod:funkcja wordpress remove_menu_page() zgłasza błąd

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; 
} 

Ważne jest, aby pamiętać, że podczas korzystania z remove_ podmenu _page(), która jest następna funkcja w plugin.php, mam nie takie błąd. moja funkcja, położony w 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

czy potrzebuję '.php' na końcu? –

Odpowiedz

17

Dzwonisz mf_remove_menu_pages() przed $menu jest właściwie skonfigurowana, albo wydaje się w przypadkach, gdy $menu nigdy nie został skonfigurowany. Musisz zaczekać na hak admin_menu, aby zadzwonić pod numer remove_menu_page(). Jeśli robisz to na admin_init, to używasz niewłaściwego haka, i dlatego borking żądań AJAX

Musisz zmienić hak. Spróbuj z tym:

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'); 
} 

Nadzieja to pomaga :)

+0

tak, zadziałało! thx :) – Matanya

+0

Thx bardzo, uratował mnie za dużo czasu –

+0

@sabari jesteś geniuszem, działało jak urok: –

0

W nowszych wersjach WordPress, aby usunąć niektóre podstrony jak theme-editor.php (lub podstrony wprowadzony przez wtyczki Jetpack) trzeba powiązać z hakiem admin_menu o bardzo wysokim priorytecie.

E.g. aby usunąć theme-editor.php, musisz ustawić priorytet około 120. W przypadku stron Jetpack potrzebujesz czegoś około 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'); 
} 

ta jest również zawarta w Wordpress Codex i na Wordpress Support Forums.

Powiązane problemy