Чи можна перейменувати ім’я ролі користувача без плагіна?


26

Чи все ж є можливість перейменувати ім’я ролі користувача через гачок, а не використовувати плагін?

Редагувати

Наприклад, administrator»owner


Не могли б ви детальніше зупинитися на тому, чого ви хочете досягти?
BjornW

перейменуйте ім’я ролі користувача, ось і все. наприклад, адміністратор -> власник
Шон Лі

Відповіді:


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-capa sposobnosti/


Я не міг змусити це працювати. Незалежно від того, що я роблю, це все ще називається "Підписники" в процесі створення бекенду. Схоже, що $wp_rolesзараз є [role_objects]частина його масиву.
Зет

Це зробило щось дуже дивне. Це вплинуло лише на першу букву ("Адмінстратор")!
Марк

3

Простим рішенням буде просто додати роль користувача add_role, використовуючи , таким чином, ви можете назвати його все, що завгодно, і додати всі необхідні можливості. http://codex.wordpress.org/Function_Reference/add_role


Намагався уникати цього, але, мабуть, це найчистіший спосіб обійтися без плагіна.
Шон Лі

2

Насправді існує багато способів досягти цього:

За допомогою чистого php та mysql ви можете редагувати серіалізований запис у db. Дійсно, Wordpress зберігає серіалізований масив ролей у wp_optionsтабл.

Так:

  1. Отримати серіалізований масив:
    SELECT option_value as serialized_string FROM wp_options WHERE option_name = 'wp_user_roles';
  2. Скасувати серіалізацію рядка - php: $rolesArray = unserialize($serialized_string)
  3. Зміна назви ролі - php: $rolesArray['role_key']['name'] = "New name"
  4. Серіалізувати назад масив - php: echo serialize($rolesArray)
  5. Замініть option_valueвміст db на вихід з попередньої точки

Якщо ви впевнені в Wordpress, ви навіть можете використовувати вбудований Wordpress REPL в wp-cli, щоб отримати збережене значення, get_option('wp_user_roles')а потім використовувати його update_optionдля оновлення.

І (завжди) не забудьте зробити резервну копію DB перед маніпуляціями з параметрами;)


Інакше, якщо вам не байдуже значення role_key ...

… Досягти цього дуже просто за допомогою wp-cli :

  1. дублювати існуючу роль - $ wp role create new_role 'New Role' --clone=old_role
  2. видалити старий - $ wp role delete old_role
  3. потім прив’яжіть new_role до користувачів.
  4. врешті повторіть кроки 1 і 2, поки old_role = new_role

1

Ви можете створити спеціальний файл локалізації. Отримайте цей файл: http://svn.automattic.com/wordpress-i18n/pot/trunk/wordpress.pot та відредагуйте за допомогою інструмента PoEdit (наприклад). На наступному кроці збережіть файл локалізації як en_GB.mo (або інший) та відредагуйте файл wp-config:

define ("WPLANG", "en_GB");


1
Уже спробували цей метод, але деякі меню, що витягуються, не перекладалися.
Шон Лі

0

Ви можете редагувати його безпосередньо у вашому БД, і він буде постійно редагуватися для вашого веб-сайту. Тут WP зберігає ролі користувача

SELECT * from blog_options WHERE option_name = 'blog_user_roles'
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.