संपादकों को मेनू संपादित करने की अनुमति दें?


46

मैं अपने संपादकों को मेनू बदलने की शक्ति देने में सक्षम होना चाहूंगा, क्या ऐसा किया जा सकता है?

उपस्थिति टैब बिल्कुल भी एक विकल्प नहीं प्रतीत होता है, क्या मैं इसे ऐसा कर सकता हूं?

जवाबों:


53

इसे अपने विषय में जोड़ें functions.php:

// add editor the privilege to edit theme

// get the the role object
$role_object = get_role( 'editor' );

// add $cap capability to this role object
$role_object->add_cap( 'edit_theme_options' );

1
get_role एक वर्ग है?
हल्दी फज

4
@ माइल्ड फज - खुद नहीं, बल्कि यह एक उदाहरण देता हैWP_Role
TheDeadMedic

8
आपको शायद हर अनुरोध पर ऐसा नहीं करना चाहिए, क्योंकि यह db लिखने के लिए जहाँ तक मुझे समझ में आया है। पर admin_initऔर केवल बेहतरif !$role_object->has_cap('edit_theme_options')
jsphpl

इस सेटिंग को डेटाबेस (टेबल wp_options, फ़ील्ड wp_user_roles) में सहेजा जाता है, इसलिए थीम / प्लगइन सक्रियण पर इसे चलाना बेहतर हो सकता है। Codex.wordpress.org/Function_Reference/add_cap
Pim Schaaf

या आप इसे functions.php में जोड़ सकते हैं, इसे एक बार चला सकते हैं और फिर इसे हटा सकते हैं
d79

18

EDIT: WP 4.9 के लिए अद्यतन और संपादक के लिए केवल मेनू आइटम छिपा रहा है

यदि आप चाहते हैं कि आपके उपयोगकर्ता नेविगेशन मेनू को बदलने में सक्षम हों, लेकिन उपस्थिति के तहत अन्य विकल्प नहीं: इसका उपयोग करें

// Do this only once. Can go anywhere inside your functions.php file
$role_object = get_role( 'editor' );
$role_object->add_cap( 'edit_theme_options' );

आप अपने व्यवस्थापक पैनल को रिफ्रेश करने के बाद इस पूरे कोड को कमेंट कर सकते हैं, क्योंकि उपरोक्त कोड डेटाबेस में लगातार बदलाव करेगा।

अब आपके पास संपादकों को दिखाई देने वाले सभी विकल्प हैं। आप अन्य विकल्पों को छिपा सकते हैं जैसे:

function hide_menu() {

    if (current_user_can('editor')) {

        remove_submenu_page( 'themes.php', 'themes.php' ); // hide the theme selection submenu
        remove_submenu_page( 'themes.php', 'widgets.php' ); // hide the widgets submenu
        remove_submenu_page( 'themes.php', 'customize.php?return=%2Fwp-admin%2Ftools.php' ); // hide the customizer submenu
        remove_submenu_page( 'themes.php', 'customize.php?return=%2Fwp-admin%2Ftools.php&autofocus%5Bcontrol%5D=background_image' ); // hide the background submenu


        // these are theme-specific. Can have other names or simply not exist in your current theme.
        remove_submenu_page( 'themes.php', 'yiw_panel' );
        remove_submenu_page( 'themes.php', 'custom-header' );
        remove_submenu_page( 'themes.php', 'custom-background' );
    }
}

add_action('admin_head', 'hide_menu');

hide_menu()फ़ंक्शन में अंतिम 3 पंक्तियां मेरे विषय के लिए विशिष्ट हैं। आप व्यवस्थापक पैनल में जिस सबमेनू को छिपाना चाहते हैं, उस पर क्लिक करके आप दूसरा पैरामीटर पा सकते हैं। फिर आपका URL कुछ इस तरह होगा: example.com/wp-admin/themes.php?page= yiw_panel

तो, इस उदाहरण में, remove_submenu_page()फ़ंक्शन के लिए दूसरा पैरामीटर होगाyiw_panel


1
यह विषयों आदि को भी छुपाता है।
जॉर्गेलाउंसबॉर्ज 12

12

वर्डप्रेस 3.8 में, यह वर्तमान स्वीकृत उत्तर की तुलना में बेहतर कोड होगा।

/**
 * @var $roleObject WP_Role
 */
$roleObject = get_role( 'editor' );
if (!$roleObject->has_cap( 'edit_theme_options' ) ) {
    $roleObject->add_cap( 'edit_theme_options' );
}

3

जब मैं व्यवस्थापक मेनू संरचना को देखता हूं, तो ऐसा लगता है कि nav-menus.phpलिंक क्षमता से बंधा हुआ हैedit_theme_options । क्या आप इस क्षमता को शामिल करने के लिए संपादक की भूमिका को संशोधित कर सकते हैं? इससे उन्हें विजेट्स को संपादित करने का विकल्प भी मिलेगा , मुझे नहीं पता कि क्या यह एक समस्या है? सभी मेनू Ajax सामान इस क्षमता द्वारा प्रतिबंधित है, इसलिए संपादन मेनू के लिए व्यवस्थापक मेनू क्षमता को बदलने से शायद काम नहीं होगा।


3

इंस्टाल प्लगइन "यूजर रोल एडिटर" - एडिटर्स के लिए एडिट-इंस्टाल करें - एडिट इंस्टॉल करें - एडिटर्स के लिए "विजेट्स" और "स्विच थीम" स्विच ऑन करें;


0

मैंने पाया है, कि आपका मेनू इस तरह काम करेगा: इंस्टाल प्लगइन " यूजर रोल एडिटर " और वहां आप संपादक की भूमिका और अन्य के लिए भी स्थिति संपादित कर सकते हैं। Edit_theme_options ON करें। लेकिन अब: आप "थीम", "विजेट" के तहत "मेनू" को देखेंगे। मेरे लिए: "मेनू" (संपादक के रूप में) पर क्लिक करने के बाद, मुझे भरे हुए विकल्प नहीं दिख रहे हैं, लेकिन खाली हैं। तो मैं प्लगइन "उपयोगकर्ता भूमिका संपादक" को निष्क्रिय कर देता हूं और "मेनू" के लिए भरे हुए विकल्प सही ढंग से दिखाई देते हैं। ध्यान दें कि प्लगइन "यूजर रोल एडिटर" को सक्रिय करने के लिए संपादक की स्थितियाँ बनी हुई हैं! मेरे लिए अच्छा है, शायद इससे आपको भी मदद मिलेगी

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