Как создать клон роли в WordPress

19 окт. 2011 г., 08:33:43
Просмотры: 23.2K
Голосов: 28

Как создать новую роль с теми же возможностями, что и у существующей роли. Например: Я хотел бы создать новую роль с такими же возможностями, как у администратора или редактора и так далее..

2
Комментарии

Что вы уже пробовали? Что сработало? Что нет? Пробовали ли вы плагин Members? Или плагин Capability Manager? Делают ли они то, что вам нужно?

soulseekah soulseekah
19 окт. 2011 г. 08:42:02

Вы можете использовать User Role Editor, если хотите делать всё визуально :)

User User
19 окт. 2011 г. 13:57:22
Все ответы на вопрос 5
3
44

Попробуйте это... Это должно сработать.

<?php
add_action('init', 'cloneRole');

function cloneRole()
{
    global $wp_roles;
    if ( ! isset( $wp_roles ) )
        $wp_roles = new WP_Roles();

    $adm = $wp_roles->get_role('administrator');
    //Добавляем новую роль 'new_role' со всеми правами администратора
    $wp_roles->add_role('new_role', 'Моя пользовательская роль', $adm->capabilities);
}
?>

Проверьте.

19 окт. 2011 г. 08:56:14
Комментарии

Внимание!! Похоже, что копирование роли происходит до того, как плагины добавляют роли и возможности. Попробую использовать admin_init, чтобы проверить, будет ли это лучше.

spankmaster79 spankmaster79
21 янв. 2014 г. 19:21:41

@spankmaster79 Да, пожалуйста, это было бы отлично!

Rutwick Gangurde Rutwick Gangurde
22 янв. 2014 г. 08:00:22

@RutwickGangurde это не сработало лучше. Роль по-прежнему игнорируется плагином

spankmaster79 spankmaster79
24 янв. 2014 г. 17:42:46
0

Вы всегда можете использовать плагин User Role Editor:

  1. Установите плагин
  2. Перейдите в раздел Пользователи > Редактор ролей
  3. Нажмите "Добавить роль" справа
  4. Выберите роль, которую хотите скопировать, из выпадающего списка "Сделать копию из" в диалоговом окне
  5. Нажмите "Добавить роль" в диалоговом окне
25 мая 2017 г. 17:35:07
0

Предположим, вы хотите клонировать редактора.

$edr = $wp_roles->get_role('Editor');
add_role('clonerole', 'клон ролей', $edr->capabilities);
28 апр. 2017 г. 09:21:12
0

система, которая сработала в моём случае, выглядит так:

<?php
add_action('init', 'cloneRole');

function cloneRole() {
 $adm = get_role('administrator');
 $adm_cap= array_keys( $adm->capabilities ); //получаем права администратора
 add_role('new_role', 'Моя Пользовательская Роль'); //создаём новую роль
 $new_role = get_role('new_role');
  foreach ( $adm_cap as $cap ) {
   $new_role->add_cap( $cap ); //копируем права администратора для новой роли
  }
}
?>
16 июл. 2018 г. 13:50:49
0

По состоянию на 2024 год, клонирование роли лучше выполнять с помощью команды wp CLI для работы с ролями, например:

wp role create 'new-role' 'New-role' --clone 'existing-role'
21 мая 2024 г. 15:28:31