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.