पूरे व्यवस्थापक मेनू को कैसे निकालें?


14

मुझे अपने उपयोगकर्ता के लिए व्यवस्थापक पैनल को अनुकूलित करने की आवश्यकता है। तो मैं संपूर्ण व्यवस्थापक मेनू कैसे निकालूं? मेनू आइटम को न हटाएं, मेरा मतलब है कि बाईं ऊर्ध्वाधर मेनू पट्टी को पूरी तरह से हटा दें, मेनू का डिज़ाइन शामिल करें (जैसे, सीएसएस, बैकग्राउंड..बैंक)। मैं चाहता हूं कि यह खाली हो जाए।

मैं इसे css हैक करके कर सकता हूँ। लेकिन मैं इसे करने के लिए हुक का उपयोग करना पसंद करता हूं। कोई विचार?

धन्यवाद


मैं उत्सुक हूँ। यदि आपके उपयोगकर्ताओं को किसी भी व्यवस्थापक मेनू आइटम तक पहुंचने की आवश्यकता नहीं है, तो उन्हें डैशबोर्ड तक पहुंच की आवश्यकता क्यों है?
मनोबलि

उद्देश्यों पर आश्चर्य ... क्या आप इसे विशिष्ट भूमिकाओं / उपयोगकर्ताओं के लिए छिपाना चाहते हैं? क्या आप एक कस्टम व्यवस्थापक बार मेनू (शीर्ष पर) बना रहे हैं?
ब्रासोफिलो

1
हां, मैं व्यवस्थापक मेनू को अनुकूलित करना चाहूंगा। ऐसा नहीं है कि वर्तमान व्यवस्थापक मेनू पर्याप्त अच्छा नहीं है, यह सिर्फ 'वर्डप्रेस' भी महसूस करता है। मेरी राय में, ब्रांडिंग के लिए अच्छा नहीं है।
देव-जिम

कृपया मेरे पिछले उत्तर को यहाँ देखें; wordpress.stackexchange.com/questions/136058/…
numediaweb

जवाबों:


16

उपयोग करने के लिए सही हुक है admin_menuऔर फिर उस मेनू को हटाने के लिए एक फ़ंक्शन बनाएं जिसे आप हटाना चाहते हैं। निम्नलिखित 2 कार्य सभी मेनू को हटाते हैं।

add_action( 'admin_menu', 'remove_admin_menus' );
add_action( 'admin_menu', 'remove_admin_submenus' );

//Remove top level admin menus
function remove_admin_menus() {
    remove_menu_page( 'edit-comments.php' );
    remove_menu_page( 'link-manager.php' );
    remove_menu_page( 'tools.php' );
    remove_menu_page( 'plugins.php' );
    remove_menu_page( 'users.php' );
    remove_menu_page( 'options-general.php' );
    remove_menu_page( 'upload.php' );
    remove_menu_page( 'edit.php' );
    remove_menu_page( 'edit.php?post_type=page' );
    remove_menu_page( 'themes.php' );
}


//Remove sub level admin menus
function remove_admin_submenus() {
    remove_submenu_page( 'themes.php', 'theme-editor.php' );
    remove_submenu_page( 'themes.php', 'themes.php' );
    remove_submenu_page( 'edit.php', 'edit-tags.php?taxonomy=post_tag' );
    remove_submenu_page( 'edit.php', 'edit-tags.php?taxonomy=category' );
    remove_submenu_page( 'edit.php', 'post-new.php' );
    remove_submenu_page( 'themes.php', 'nav-menus.php' );
    remove_submenu_page( 'themes.php', 'widgets.php' );
    remove_submenu_page( 'themes.php', 'theme-editor.php' );
    remove_submenu_page( 'plugins.php', 'plugin-editor.php' );
    remove_submenu_page( 'plugins.php', 'plugin-install.php' );
    remove_submenu_page( 'users.php', 'users.php' );
    remove_submenu_page( 'users.php', 'user-new.php' );
    remove_submenu_page( 'upload.php', 'media-new.php' );
    remove_submenu_page( 'options-general.php', 'options-writing.php' );
    remove_submenu_page( 'options-general.php', 'options-discussion.php' );
    remove_submenu_page( 'options-general.php', 'options-reading.php' );
    remove_submenu_page( 'options-general.php', 'options-discussion.php' );
    remove_submenu_page( 'options-general.php', 'options-media.php' );
    remove_submenu_page( 'options-general.php', 'options-privacy.php' );
    remove_submenu_page( 'options-general.php', 'options-permalinks.php' );
    remove_submenu_page( 'index.php', 'update-core.php' );
}

उपरोक्त 2 कार्यों का उपयोग करके बाएं मेनू का स्क्रीनशॉट:

यहाँ छवि विवरण दर्ज करें


3
मैं का उपयोग करके एक और रास्ता मिल गया $GLOBALS['menu'] = array();। सरणी में शून्य देने से भी काम चल जाएगा।
देव-जीम

आप इसे कहाँ लगाते हैं?

किसी ने उस स्क्रीन शॉट से हाल के ड्राफ्ट देखे? ;)
15

5

के नेतृत्व के बाद /wp-admin/admin-header.php-> /wp-admin/menu-header.phpऐसा करने के लिए कोई हुक नहीं है।

एक समाधान हुक करना है admin_headऔर कुछ CSS + jQuery करना है

add_action('admin_head', 'wpse_52099_script_enqueuer');
function wpse_52099_script_enqueuer(){
    if(!current_user_can('administrator')) {
        echo <<<HTML
        <style type="text/css">
        #wpcontent, #footer { margin-left: 0px; }
        </style>
        <script type="text/javascript">
        jQuery(document).ready( function($) {
            $('#adminmenuback, #adminmenuwrap').remove();
        });     
        </script>
HTML;
    }
}

[अद्यतन]
सवाल के स्पष्टीकरण के अनुसार, जहां यह स्पष्ट हो जाता है कि प्रेरणा व्यवस्थापक क्षेत्र को ब्रांड कर रही है, ये 4 प्लगइन्स हैं जो मैं उसके लिए उपयोग करता हूं:


यदि आप इस मार्ग पर जाते हैं, तो हुक के wp_enqueue_script()साथ उपयोग करना अधिक समझ में आता है admin_enqueue_script
mrwweb

1
@mrwweb जब यह इतनी छोटी प्रविष्टि है? क्या आपको लगता है कि यह योग्य है?
ब्रासोफिलो

माना। छोटे स्क्रिप्ट / स्टाइल सम्मिलन अधिक आसानी से किए जाते हैं admin_head
क्रिसगिटेरिटगुई

जब तक मेरे पास कोई अन्य विकल्प नहीं है, मुझे jquery का उपयोग करना पसंद नहीं है। क्या होगा अगर आगंतुक अपने ब्राउज़र पर जावास्क्रिप्ट को अक्षम करते हैं? हालांकि, होने की संभावना नहीं है, लेकिन वहां संभावना है। वैसे भी सलाह के लिए धन्यवाद।
देव-जीम

मेरे उदाहरण में, सीएसएस में भी 2 डिव को छिपाकर दोहरे निष्कासन की बात होगी।
ब्रासोफिलो

2

केवल हुक-अनुकूल तरीका मुझे पता है कि remove_menu_page()हर एक मेनू आइटम के लिए उपयोग करना है। फिर भी, मुझे नहीं पता कि बाएं बार में क्या होता है (क्या यह 0px चौड़ाई तक गिर जाएगा या क्या)। हुक का उपयोग करने के साथ भी, मैं कुछ बिंदु पर कल्पना करता हूं कि आप मेनू चिह्न शैलियों के अवशेषों को साफ करने के लिए एक व्यवस्थापक स्टाइलशीट को संलग्न करना चाहते हैं।

मुझे ऐसा करने में सावधानी होगी। उदाहरण के लिए, यदि आप "सेटिंग" को हटाते हैं, तो "सेटिंग" मेनू में मेनू पेज बनाने वाले किसी भी प्लगइन्स तक नहीं पहुंचा जा सकता है। सामान्य तौर पर, मुझे आश्चर्य है कि वास्तव में मेनू को पूरी तरह से हटाने के लिए यह कितना टिकाऊ है।


मुझे यकीन है कि वह नियमित उपयोगकर्ताओं के लिए मेनू को हटाने के लिए एक रास्ता ढूंढ रहा था, न कि व्यवस्थापक। :)
क्रिस्टीन कूपर

1
add_action( 'admin_menu', 'remove_admin_menus' );

function remove_admin_menus(){
    global $menu;
    $menu = array();
}

यह उत्तर बहुत आसान है। यह छोटा है और प्लगइन्स द्वारा बनाए गए मेनू पृष्ठों को छोड़कर एक आकर्षण की तरह काम करता है। (जो एक समस्या नहीं होनी चाहिए क्योंकि वे केवल एक व्यवस्थापक के लिए दिखाई दे रहे हैं)
चार्ल्स

यह एक मुट्ठी भर समाधान है, वास्तव में, लेकिन यह कहने योग्य है कि यह वास्तव में उन व्यवस्थापक पृष्ठों तक पहुंच को अवरुद्ध नहीं करेगा, यह बस उन्हें व्यवस्थापक बार में अदृश्य कर देगा। यह निश्चित रूप से आइटम छिपाने के लिए एक सीएसएस समाधान से बेहतर है, लेकिन सुरक्षा के मामले में अभी भी त्रुटिपूर्ण है: सेवी उपयोगकर्ता अभी भी यूआरएल को संपादित करके व्यवस्थापक पृष्ठों तक सीधे पहुंच प्राप्त कर सकते हैं।
मार्कोस बुर्के

0

मैं @brasofilo के समाधान में सुधार करता हूं क्योंकि इसमें छोटी बग है - कम इंटरनेट कनेक्शन मेनू के साथ पेज रीलोड पर बहुत कम समय के लिए दिखाई देगा। इससे बचने के लिए मैंने कुछ और सीएसएस जोड़े:

add_action('admin_head', 'wpse_52099_script_enqueuer');

function wpse_52099_script_enqueuer() {

    if(!current_user_can('administrator')) { 

echo <<<HTML
<style type="text/css">
#wpcontent, #footer { margin-left: 0px !important; }
#adminmenuback, #adminmenuwrap { display: none !important; }
</style>
<script type="text/javascript">
jQuery(document).ready( function($) {
    $('#adminmenuback, #adminmenuwrap').remove();
});
</script>
HTML;

    }
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.