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.