क्या प्लगइन के बिना उपयोगकर्ता की भूमिका का नाम बदलने का कोई तरीका है?


26

वहाँ वैसे भी प्लगइन का उपयोग करने के बजाय, हुक के माध्यम से एक उपयोगकर्ता की भूमिका का नाम बदलने के लिए है?

संपादित करें

उदाहरण के लिए, administrator»owner


क्या आप यह जानना चाहते हैं कि आप क्या हासिल करना चाहते हैं?
ब्योर्नॉव

उपयोगकर्ता की भूमिका का नाम बदलें, बस। उदाहरण के लिए, व्यवस्थापक -> स्वामी
सीन ली

जवाबों:


44
function change_role_name() {
    global $wp_roles;

    if ( ! isset( $wp_roles ) )
        $wp_roles = new WP_Roles();

    //You can list all currently available roles like this...
    //$roles = $wp_roles->get_names();
    //print_r($roles);

    //You can replace "administrator" with any other role "editor", "author", "contributor" or "subscriber"...
    $wp_roles->roles['administrator']['name'] = 'Owner';
    $wp_roles->role_names['administrator'] = 'Owner';           
}
add_action('init', 'change_role_name');

http://www.garyc40.com/2010/04/ultimate-guide-to-roles-and-capabilities/


मुझे यह काम नहीं मिला। इसके बावजूद कि मैं क्या करता हूं, फिर भी इसे बैकेंड निर्माण प्रक्रिया में 'सब्सक्राइबर' कहा जाता है। ऐसा लग रहा है कि $wp_rolesअब [role_objects]यह सरणी का एक हिस्सा है।
जेथ

यह कुछ बहुत ही अजीब था। यह केवल पहले अक्षर ("Odministrator") को प्रभावित करता है!
मार्क

3

एक सरल समाधान यह होगा कि आप केवल उपयोगकर्ता की भूमिका का उपयोग add_roleकर सकते हैं, इस तरह से आप इसे अपनी इच्छानुसार नाम दे सकते हैं और जो भी क्षमता आप चाहते हैं उसे जोड़ सकते हैं। http://codex.wordpress.org/Function_Reference/add_role


इससे बचने की कोशिश की, लेकिन मुझे लगता है कि यह बिना प्लगइन के सबसे साफ तरीका है।
सीन ली

2

वास्तव में, इसे प्राप्त करने के कई तरीके हैं:

साथ शुद्ध PHP और MySQL आप DB में धारावाहिक प्रविष्टि को संपादित कर सकते हैं। वास्तव में, Wordpress wp_optionsतालिका में भूमिकाओं के क्रमबद्ध सरणी को संग्रहीत करता है ।

इसलिए:

  1. क्रमबद्ध सरणी लाएं:
    SELECT option_value as serialized_string FROM wp_options WHERE option_name = 'wp_user_roles';
  2. स्ट्रिंग को अनसेज़लाइज़ करें - php: $rolesArray = unserialize($serialized_string)
  3. भूमिका नाम बदलें - php: $rolesArray['role_key']['name'] = "New name"
  4. सरणी को वापस सीरियल करें - php: echo serialize($rolesArray)
  5. option_valueपिछले बिंदु से आउटपुट के साथ db सामग्री को बदलें

यदि आप Wordpress के साथ आत्मविश्वास महसूस करते हैं, तो आप संग्रहीत मान प्राप्त करने के लिए wp-cli में एम्बेडेड Wordpress REPL का उपयोग कर सकते हैं get_option('wp_user_roles')और फिर update_optionइसे अपडेट करने के लिए उपयोग कर सकते हैं।

और (हमेशा) विकल्प हेरफेर से पहले db का बैकअप लेना याद रखें;)


अन्यथा, यदि आप role_key मान के बारे में परवाह नहीं करते हैं ...

… यह wp-cli के साथ हासिल करना बहुत आसान है :

  1. मौजूदा भूमिका की नकल करें - $ wp role create new_role 'New Role' --clone=old_role
  2. पुराने को हटा दें - $ wp role delete old_role
  3. फिर new_role को उपयोगकर्ता के साथ संबद्ध करें।
  4. अंततः चरण 1 और 2 को पुराने_रोले = नए_रोले तक दोहराएं

1

आप एक कस्टम स्थानीयकरण फ़ाइल बना सकते हैं। इस फ़ाइल को प्राप्त करें: http://svn.automattic.com/wordpress-i18n/pot/trunk/wordpress.pot और PoEdit टूल (उदाहरण के लिए) का उपयोग करके संपादित करें। अगले चरण में स्थानीयकरण फ़ाइल को en_GB.mo (या अन्य) के रूप में सहेजें और wp-config फ़ाइल संपादित करें:

परिभाषित ("WPLANG", "en_GB");


1
पहले से ही इस विधि की कोशिश की, लेकिन कुछ पुल डाउन मेनू का अनुवाद नहीं किया गया।
सीन ली

0

आप इसे सीधे अपने DB में संपादित कर सकते हैं, और इसे आपकी वेबसाइट के लिए स्थायी रूप से संपादित किया जाएगा। यहां वह जगह है जहां WP उपयोगकर्ता भूमिकाएं रखता है

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