Czy istnieje sposób zmiany nazwy nazwy roli użytkownika bez wtyczki?


26

Czy istnieje możliwość zmiany nazwy roli użytkownika za pomocą hooka, zamiast używania wtyczki?

Edytować

Na przykład administrator»owner


Czy mógłbyś wyjaśnić, co chcesz osiągnąć?
BjornW,

zmień nazwę nazwy roli użytkownika, to wszystko. na przykład administrator -> właściciel
Sean Lee

Odpowiedzi:


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/


Nie mogłem tego uruchomić. Niezależnie od tego, co robię, w procesie tworzenia zaplecza nadal jest nazywany „subskrybentami”. Wygląda na to, że $wp_rolesteraz ma [role_objects]część swojej tablicy.
Zeth

To zrobiło coś bardzo dziwnego. Wpłynął tylko na pierwszą literę („Odministrator”)!
Mark


2

W rzeczywistości istnieje wiele sposobów na osiągnięcie tego:

Za pomocą czystego php i mysql możesz edytować serializowany wpis w bazie danych. Rzeczywiście, Wordpress przechowuje szeregowany szereg ról w wp_optionstabeli.

Więc:

  1. Pobierz szeregowaną tablicę:
    SELECT option_value as serialized_string FROM wp_options WHERE option_name = 'wp_user_roles';
  2. Unserializuj ciąg - php: $rolesArray = unserialize($serialized_string)
  3. Zmień nazwę roli - php: $rolesArray['role_key']['name'] = "New name"
  4. Serializuj z powrotem tablicę - php: echo serialize($rolesArray)
  5. Zamień option_valuezawartość db na dane wyjściowe z poprzedniego punktu

Jeśli czujesz się pewnie dzięki Wordpress, możesz nawet użyć wbudowanego narzędzia Wordpress REPL w wp-cli, aby pobrać przechowywaną wartość, get_option('wp_user_roles')a następnie użyć jej update_optiondo aktualizacji.

I (zawsze) pamiętaj, aby wykonać kopię zapasową bazy danych przed manipulacją opcjami;)


W przeciwnym razie, jeśli nie zależy ci na wartości role_key…

… Bardzo łatwo to osiągnąć dzięki wp-cli :

  1. zduplikuj istniejącą rolę - $ wp role create new_role 'New Role' --clone=old_role
  2. usuń stary - $ wp role delete old_role
  3. następnie powiąż new_role z użytkownikiem (użytkownikami).
  4. ostatecznie powtórz krok 1 i 2, aż old_role = new_role


0

Możesz edytować go bezpośrednio w swojej bazie danych i będzie on edytowany na stałe dla Twojej witryny. Tutaj WP zachowuje role użytkowników

SELECT * from blog_options WHERE option_name = 'blog_user_roles'
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.