Gibt es eine Möglichkeit, den Benutzernamen ohne Plug-in umzubenennen?


26

Gibt es eine Möglichkeit, einen Benutzerrollennamen über einen Hook umzubenennen, anstatt das Plugin zu verwenden?

Bearbeiten

Zum Beispiel administrator»owner


Könnten Sie näher erläutern, was Sie erreichen möchten?
BjornW

benutzerrollenname umbenennen, fertig. Zum Beispiel Administrator -> Besitzer
Sean Lee

Antworten:


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/


Ich konnte das nicht zum Laufen bringen. Unabhängig davon, was ich mache, wird es im Backend-Erstellungsprozess immer noch als "Abonnenten" bezeichnet. Es sieht so aus, als hätte das $wp_rolesjetzt einen [role_objects]Teil seines Arrays.
Zeth

Das tat etwas sehr Seltsames. Es betraf nur den ersten Buchstaben ("Odministrator")!
Mark


2

Tatsächlich gibt es viele Möglichkeiten, dies zu erreichen:

Mit reinem PHP und MySQL können Sie den serialisierten Eintrag in der Datenbank bearbeiten. In der Tat speichert Wordpress das serialisierte Array von Rollen in einer wp_optionsTabelle.

So:

  1. Holen Sie sich das serialisierte Array:
    SELECT option_value as serialized_string FROM wp_options WHERE option_name = 'wp_user_roles';
  2. Den String unserialisieren - php: $rolesArray = unserialize($serialized_string)
  3. Ändern Sie den Rollennamen - php: $rolesArray['role_key']['name'] = "New name"
  4. Serialisieren Sie das Array zurück - php: echo serialize($rolesArray)
  5. Ersetzen Sie den DB- option_valueInhalt durch die Ausgabe vom vorherigen Punkt

Wenn Sie mit Wordpress vertraut sind, können Sie sogar die eingebettete Wordpress-REPL in wp-cli verwenden , um den gespeicherten Wert mit abzurufen get_option('wp_user_roles')und ihn dann update_optionzu aktualisieren.

Und (immer) daran denken, die Datenbank vor der Optionsmanipulation zu sichern;)


Andernfalls, wenn Sie sich nicht für den Wert role_key interessieren ...

… Mit wp-cli ist das ganz einfach :

  1. vorhandene Rolle duplizieren - $ wp role create new_role 'New Role' --clone=old_role
  2. lösche die alte - $ wp role delete old_role
  3. Ordnen Sie dann den Benutzern new_role zu.
  4. Wiederholen Sie ggf. die Schritte 1 und 2, bis old_role = new_role

1

Sie können eine benutzerdefinierte Lokalisierungsdatei erstellen. Laden Sie diese Datei herunter : http://svn.automattic.com/wordpress-i18n/pot/trunk/wordpress.pot und bearbeiten Sie sie mit dem PoEdit-Tool (zum Beispiel). Speichern Sie im nächsten Schritt die Lokalisierungsdatei als en_GB.mo (oder eine andere) und bearbeiten Sie die wp-config-Datei:

define ("WPLANG", "en_GB");


1
Ich habe diese Methode bereits ausprobiert, aber einige Pulldown-Menüs wurden nicht übersetzt.
Sean Lee

0

Sie können es direkt in Ihrer DB bearbeiten und es wird dauerhaft für Ihre Website bearbeitet. Hier behält WP Benutzerrollen

SELECT * from blog_options WHERE option_name = 'blog_user_roles'
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.