Esiste un modo per rinominare il nome del ruolo utente senza plug-in?


26

Esiste un modo per rinominare il nome di un ruolo utente tramite hook, anziché utilizzare il plugin?

modificare

Ad esempio, administrator»owner


Potresti approfondire ciò che vuoi ottenere?
BjornW,

rinominare il nome del ruolo utente, tutto qui. ad esempio, amministratore -> proprietario
Sean Lee,

Risposte:


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/


Non sono riuscito a farlo funzionare. Indipendentemente da ciò che faccio, viene comunque chiamato "Sottoscrittori" nel processo di creazione del back-end. Sembra che $wp_rolesora abbia una [role_objects]parte del suo array.
Zeth,

Questo ha fatto qualcosa di molto strano. Ha interessato solo la prima lettera ("Odministrator")!
Segna il


2

In realtà, ci sono molti modi per ottenerlo:

Con pure php e mysql è possibile modificare la voce serializzata nel db. Infatti, Wordpress memorizza la matrice serializzata di ruoli nella wp_optionstabella.

Così:

  1. Recupera l'array serializzato:
    SELECT option_value as serialized_string FROM wp_options WHERE option_name = 'wp_user_roles';
  2. Annulla la serializzazione della stringa - php: $rolesArray = unserialize($serialized_string)
  3. Cambia il nome del ruolo - php: $rolesArray['role_key']['name'] = "New name"
  4. Serializzare nuovamente l'array - php: echo serialize($rolesArray)
  5. Sostituisci il option_valuecontenuto del db con l'output del punto precedente

Se ti senti sicuro con Wordpress, puoi persino usare il REPL di Wordpress incorporato in wp-cli per recuperare il valore memorizzato get_option('wp_user_roles')e quindi usarlo update_optionper aggiornarlo.

E (sempre) ricordati di eseguire il backup del db prima della manipolazione delle opzioni;)


Altrimenti, se non ti interessa il valore di role_key ...

... è molto facile raggiungerlo con wp-cli :

  1. duplicare il ruolo esistente - $ wp role create new_role 'New Role' --clone=old_role
  2. elimina quello vecchio - $ wp role delete old_role
  3. quindi associare new_role agli utenti.
  4. eventualmente ripetere i passaggi 1 e 2 fino a old_role = new_role

1

È possibile creare un file di localizzazione personalizzato. Ottieni questo file: http://svn.automattic.com/wordpress-i18n/pot/trunk/wordpress.pot e modifica utilizzando lo strumento PoEdit (ad esempio). Nel passaggio successivo salva il file di localizzazione come en_GB.mo (o altro) e modifica il file wp-config:

define ("WPLANG", "en_GB");


1
Ho già provato questo metodo, ma alcuni menu a discesa non sono stati tradotti.
Sean Lee,

0

Puoi modificarlo direttamente nel tuo DB e verrà modificato in modo permanente per il tuo sito web. Qui è dove WP mantiene i ruoli utente

SELECT * from blog_options WHERE option_name = 'blog_user_roles'
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.