2012-01-29 15 views
8

मैं WordPress व्यवस्थापक पैनल पर कुछ शीर्ष-स्तर मेनू को निकालने का प्रयास कर रहा हूं। विचित्र रूप से पर्याप्त मुझे प्लगइन.एफ़पी फ़ाइल से एक त्रुटि संदेश मिलता है, जहां फ़ंक्शन घोषित किया जाता है, कह रहा है: "सी: \ wamp \ www \ wordpress-alut \ wp-admin \ में foreach() के लिए अमान्य तर्क प्रदान किया गया \ लाइन 1261 पर plugin.php "। मैं फाइल करने के लिए चला गया और निम्नलिखित कोड मिला:वर्डप्रेस फ़ंक्शन 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' की आवश्यकता है? –

उत्तर

17

आप $menu से पहले mf_remove_menu_pages() कॉल कर रहे हैं वास्तव में सेट किया गया है, या यह मामलों में लगता है जब $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

@sabari आप प्रतिभाशाली हैं, यह आकर्षण की तरह काम करता है: –

0

वर्डप्रेस के नए संस्करण में, theme-editor.php जैसे कुछ उपपृष्ठ दूर करने के लिए (या उपपृष्ठ जेटपैक प्लगइन द्वारा शुरू की) आप admin_menu हुक करने के लिए बाध्य करने के लिए है बहुत उच्च प्राथमिकता के साथ।

उदा। theme-editor.php को हटाने के लिए आपको 120 की प्राथमिकता सेट करने की आवश्यकता है। जेटपैक पृष्ठों के लिए, आपको 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 में कहा गया है।

संबंधित मुद्दे