2012-01-29 3 views
8

wordpress admin 패널에서 몇 가지 최상위 메뉴를 제거하려고합니다. 이상하게도 함수가 선언 된 plugin.php 파일에서 다음과 같은 오류 메시지가 나타납니다. "C : \ wamp \ www \ wordpress-alut \ wp-admin \ includes \에 foreach() plugin.php on line 1261 ". 나는 파일에 가서 다음 코드 발견 : 내가 remove_ 하위 메뉴를 plugin.php의 다음 기능이 _page()를 사용할 때, 나는 그런를 얻을 것이 중요합니다wordpress 함수 remove_menu_page()가 오류를 throw합니다.

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

을 오류. functions.php에있는 내 기능 : 당신은 $menu 전에 mf_remove_menu_pages()를 호출하고

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'가 필요합니까? –

답변

17

실제로 설정, 또는 $menu가 설정되지 않습니다 때 경우에 보인다. 실제로 remove_menu_page()을 호출하려면 admin_menu 후크를 기다려야합니다. 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

+0

Thx u 대단히 나를 구해 줬어 –

+0

@ 사바리 천재 야, 그것은 매력처럼 일했다 : –

0

:) 도움이 theme-editor.php 같은 일부 하위 페이지를 제거 (또는 하위 페이지가 제트 팩 플러그인에 의해 소개) 당신이 admin_menu 후크 결합해야 우선 순위는 매우 높습니다.

예. 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로 평가된다.

관련 문제