Плагин Редактор Ролей Пользователей WordPress

Редактор Ролей Пользователей

User Role Editor


Плагин для WordPress “Редактор ролей пользователей” (User Role Editor) позволяет изменять стандартные роли пользователей WordPress несколькими кликами мыши. Достаточно пометить галочками разрешения, которые нужно включить в выбранную роль и нажать кнопку “Сохранить” для сохранения изменений в базе данных WordPress. Вот и вся процедура.
Добавляйте и настраивайте ваши собственные роли. При создании новой роли можно взять за основу любую из существующих. Затем можно вновь созданные роли назначать пользователям. Удаляйте не нужные больше роли из созданных вами. Роль можно удалить, если она не присвоена ни одному пользователю. Измените роль, присваиваемую пользователям по-умолчанию. Плагин поддерживает WordPress в много-сайтовой (сетевой) конфигурации.
Зачем редактировать роли? Предположим вы желаете, чтобы ассистенты (contributors) вашего блога могли загружать свои изображения для включения в свои статьи. Стандратная роль WordPress “contributor” не включает такого разрешения. В этой ситуации вы могли бы изменить включенные в роль пользователя разрешения вручную, используя SQL-клиента, как описано в статье “Как изменить разрешения роли пользователя WordPress”, если вы обладаете достаточными знаниями и опытом в этой области. Но что делать в обратном случае? Хорошая новость – теперь эта задачка решается просто, установите и используйте плагин “Редактор ролей пользователя” (User Role Editor) :) .
  • Ws256

    Спасибо за плагин. Но у меня не получилось его использовать. Страница настроек не открывается, время выполнения скрипта стоит 80.

    [Wed Jul 13 09:38:20 2011] [warn] mod_fcgid: read data timeout in 40 seconds
    [Wed Jul 13 09:38:21 2011] [warn] (110)Connection timed out: mod_fcgid: ap_pass_brigade failed in handle_request function

    “Плагин позволяет назначать отдельным пользователям новые возможности напрямую в дополнение к присвоенной пользователю роли. Для того чтобы сделать это, откройте список пользователей щелкнув по пункту меню «Пользователи». Найдите в списке нужного пользователя, подведите к нему курсор и выберите ссылку «Возможности».”

    А вот «Возможности» – работают, добавил редактору доступ к управлению плагином – и он не появился у него в консоли.

    WP 3.2.1

    • http://shinephp.com Vladimir Garagulya

      Это уже третий сигнал. Предполагаю, что не хватает времени проверить использование возможностей/разрешений (capabilities) всеми пользователями, если их зарегистрировано достаточно большое количество. Сейчас в боксе для удаления возможностей плагин отображает не все существующие возможности, а только не используемые. Для этого и отрабатывает такая проверка. У вас много пользователей зарегистрировано на сайте? Не нужно точное количество, 100, 200, 1000?
      Я планирую добавить опцию для отключения такой проверки. А также вынесу дополнительные функции, как добавить возможность, удалить возможность в отдельное меню, чтобы не блокировали в случаях, подобных вашему, основной функционал.
      Сейчас можете закомментировать вызов заполнения бокса для удаления возможностей. В файле ure-role-edit.php замените строку 45
      $capabilityRemoveHTML = getCapsToRemoveHTML();
      на
      $capabilityRemoveHTML = ”;
      Это должно помочь до выхода очередного обновления для этого плагина.

      • http://shinephp.com Vladimir Garagulya

        Попробуйте версию 3.2. Надеюсь, мне удалось решить эту проблему.

  • Gast

    могу ли я использовать этот Плагин для изменения ролей в Buddypress? Например разрешить определённым пользователям доступ на все группы в Buddypress и другим пользователям только доступ на группы, которым они принадлежат. Заранее благодарен.

    • http://shinephp.com Vladimir Garagulya

      Скорее всего не можете.
      Мне пока не приходилось активно использовать BuddyPress. После его установки на тестовый сайт я не увидел новых ролей в списке ролей WordPress. Похоже, что BuddyPress их не создаёт. Не использует BuddyPress стандартную систему разрешений (capabilities) WordPress и для управления группами пользователей. На сколько я успел разобраться, группы пишутся в отдельные таблицы BuddyPress в базе данных. Среди членов группы могут быть выделены администраторы (поле is_admin в таблице bp_group_members)- скорее всего это делается через интерфейс самого BuddyPress либо с использованием его (BuddyPress) плагинов.

  • Denis Tabac

    Что означают level_0 – level_10?

    • http://shinephp.com Vladimir Garagulya

      Пользовательские уровни level_0-level_10 были введены для разграничения доступа, начиная с версии WordPress 1.5. В WordPress 2.0 они были заменены Ролями (Role) и Возможностями/Разрешениями (Capability). Начиная с WordPress 3.0 пользовательские уровни более не используются WordPress и остаются в базе данных только для совместимости со старыми плагинами и темами.
      Подробнее об пользовательских уровнях можно прочитать здесь
      http://codex.wordpress.org/User_Levels
      Подробнее о ролях, разрешениях и о том, как соотносятся пользовательские уровни с ролевой системой можно прочесть здесь
      http://codex.wordpress.org/Roles_and_Capabilities

  • http://twitter.com/exytab exytab

    Есть ли возможность удалить стандартную роль (например, Contributor)? Или сделать так, что бы её ни кто не видел?

    • http://twitter.com/exytab exytab

      Уже нашел.
      remove_role( ‘contributor’ );

      • http://shinephp.com Vladimir Garagulya

        Отлично. А если нужно только скрыть, можно использовать фильтр

        add_filter(‘editable_roles’, ‘hide_role’);

        function hide_role($roles) {

        if (isset($roles['contributor'])){
        unset( $roles['contributor'] );
        }

        return $roles;

        }
        // end of hide_role()

  • http://twitter.com/exytab exytab

    У меня очень странная проблема. Все пользователи (кроме администратора) не могут редактировать и удалять свои коментарии (создавать могут). В чём может быть проблема?

    • http://shinephp.com Vladimir Garagulya

      Комментарии в WordPress могут модерировать (редактировать, удалять) только администратор и автор статьи. Если администратор и автор статьи – один и тот же пользователь, получаем в точности вашу проблему.

  • http://1100sovetov.ru/ Алёна

    Спасибо за пост, пригодился.

  • http://1100sovetov.ru/ Алёна

    А если пользователь с правами участник может писать статьи, но не может добавлять фотографии – это права возможно добавить с помощью этого плагина?

  • Kost9

    Добрый день.
    Во первых спасибо за Ваш плагин! Очень удобный и понятный UI.
    Надеюсь вы сможете помочь мне решить некую проблему:
    С помошью вашего плагина была создана отдельная группа с правами:
    +Удалять страницы
    +Удалять статьи
    +Удалять опубликованные страницы
    +Удалять опубликованные статьи
    +Изменять страницы
    +Изменять статьи
    +Редактировать опубликованные страницы
    +Редактировать опубликованные статьи
    +Модерировать комментарии
    +Публиковать страницы
    +Публиковать статьи
    +Чтение
    +html без фильтра
    +Загружать файлы
    По идее пользователь Петя, которые входит в эту группу может: редактировать статьи/страницы которые он публиковал, публиковать новые страницы/статьи. А так же некоторые другие функции.
    Все это работает на УРА! НО! Страницы и статьи для которых в ручную, через свойства, был поставлен “Петя” как автор, для редактирования ему не доступны. Точнее в списке они есть, отображаются как “страница автора”. А вот при нажатии “изменить” получаем вот такое см. картинку.
    Новые страницы/статьи которые изначально созданы “Петей” доступны ему для редактирование без каких либо проблем.

    Буду Вам очень признателен за помощь!

    • Kost9

      Апдейт, для справки.
      Если установить для группы “Редактировать чужие страницы” то Петя получает возможность редактировать страницы с измененным авторством, и все другие так же.

      • http://shinephp.com Vladimir Garagulya

        Добрый день,

        У меня такой пользователь спокойно редактирует присвоенную ему страницу.
        Да и судя по вашей картинке с доступом и у вас всё в порядке. Возможен конфликт с другим плагином. Попробуйте отключить все плагины и проверить, что изменится.
        Ещё можно добавить в wp-config.php такой параметр
        define(‘WP_DEBUG’, true);
        Может быть WordPress сам проговорится, в чем у него проблема.

        • Kost9

          Спасибо за наводку… Усилил ковыряние, оказалось что проблема в плагине “All in ONE SEO”. Так как он используется при работе со страницей. И еще с некими другими завязанными на редактирование страницы…

          Проблема исчезла когда добавил “Управлять установками”. Эта директива я так понял дает права на работу с плагинами?
          Но к сожалению, она так же дала доступ к настройкам сайта :) Что не приемлемо… и очень опасно.

          Пришлось ставить еще один плагин “Advanced Access Manager” в котором для отдельных групп можно отключать конкретные меню в админке. Пока что вот такие костыли…

          Может быть Вам так же реализовать функционал для отключения некоторых “Меню” админки отдельным пользователям / группа? Ваш плагин самый удобный из сотен пробуемых мною.

          • http://shinephp.com Vladimir Garagulya

            Спасибо за оценку и идею. Может быть со временем. С ним всегда, как понимаете проблемы.
            Опять же на этом поле уже есть ряд неплохих решений. Могу из своего опыта добавить плагин ‘Adminimize’.

          • Виктор

            В тему – Я пользуюсь плагинами Shareaholic и vSlider. К сожалению, ваш плагин позволяет авторам не только видеть оба плагина, но также редактировать или даже удалять второй.

          • http://shinephp.com Vladimir Garagulya

            Не совсем понятно, при чем здесь User Role Editor. Я вижу два варианта: либо разработчик упомянутого плагина выбрал слишком низкий уровень доступа для своего плагина, либо вы отредактировали роли таким образом, что авторы могут позволить себе больше, чем вам хотелось бы.

  • http://garfo.ru/ CyberMax

    Хороший плагин, работает. Но в многосайтовой сети всё таки не полностью. Там если зайти в управление пользователями сети, нет этой ссылки “Возможности” возле имени пользователя. А так конечно можно роли создавать и переназначать их для отдельных пользователей. Но тут снова таки, вот например нельзя сделать такую роль которая бы давала администраторам отдельных блогов в сети некоторые права суперадминистратора всей сети. Так например нужно было сделать чтобы администратор блога в сети добавлял в виджет код счетчика с скриптом, у него на это нет прав, а у суперадминистратора есть такая возможность. В общем пока решил это в помощью плагина allow-javascript-in-text-widgets, тем более что он специально под мультисайтовый WordPress сделан. А интересно можно ли с помощью функции “Добавить новую роль” в User Role Editor это сделать?

    • http://shinephp.com Vladimir Garagulya

      Спасибо.

      “Возможности” или “разрешения” пользователей храняться WordPress на “посайтовой” основе. То есть для каждого сайта свои и хранятся отдельно. Поэтому выносить редактор возможностей пользователя на уровень консоли управления сетью суперадминистратора, пока разработчики WordPress не реализовали что-то вроде сетевых (сразу на всю сеть) прав доступа для пользователей, нет смысла.

      В мультисайтовой сети только из соображений безопасности фильтр HTML-тэгов отключен только для суперадминистратора. Для обычных администраторов он всегда включен, независимо от наличия в роли возможности “unfiltered_html”. Таким образом, ответ на ваш второй вопрос отрицательный, с использованием User Role Editor проблему решить не удастся. Это исключение зашито в основной код WordPress, как отдельная логика, независимая от роли пользователя и набора её возможностей/разрешений/permissions/capabilities.
      Если считаете возможным делегировать это право ввода любого HTML-кода ВСЕМ администраторам, можно поставить плагин
      http://wordpress.org/extend/plugins/unfiltered-mu/
      Но я бы этого делать не стал. Сразу возникает масса проблем с безопасностью вашей мультисайтовой сети. Об этом, кстати, честно предупреждают и разработчики плагина. Разве что в случае, когда список администраторов ограничен, и все они – ваши доверенные лица.

      • CyberMax

        “пока разработчики WordPress не реализовали что-то вроде сетевых (сразу на всю сеть) прав доступа для пользователей”

        Если я правильно понял о чем вы, то там уже есть такая функция. Для этого надо зайти в панели администратора сети в Управление сетью > Пользователи, потом выбрать пользователя, зайти в Редактирование пользователя, там можно отметить галкой где “Дать этому пользователю права суперадминистратора сети” и администратор отдельного блога станет суперадминистратором сети. Но мне надо было дать администратору отдельного блога только некоторые функции суперадминистратора сети, поэтому и спрашивал.

  • http://apps-oracle.ru/ rudev

    Обнаружил проблему работы совместно с плагином Robots Meta.
    Для пользователя стоит роль “Участник”, при попытке в админке просмотреть свои записи, перекидывает на главную страницу.
    Но при этом дает просмотреть страницы по следующим ссылкам: Все, Опубликованные , Черновики , На утверждении.
    Ошибка именно про просмотре своих записей.

    • http://apps-oracle.ru/ rudev

      Если снять опцию “Disable the author archives” для плагина Robots Meta, начинает работать просмотр собственных записей.

      • http://shinephp.com Vladimir Garagulya

        Эта проблема – прямой результат работы Robots Meta. Если деактивировать User Role Editor, проблема остаётся. Так что это не вопрос совместной работы этих двух плагинов. Проблему нужно адресовать автору Robots Meta.

  • Tishenkoav

    А как роль переименовать в кириллицу? Все создается клево, но вот проблема в том что, хочу выводить названия ролей на Русском, это возможно?

  • Alexey Petrenko

    Привет.

    Спасибо за плагин. Польза!

    Я с багрепортом или RFE, как смотреть.
    Названия ролей, на русском, языке в Вашем плагине не совпадают с переводом ролей в самом WP. Можно ли как-то брать названия ролей для редактора всё же в WP? А то сбивает с толку.

    • http://shinephp.com Vladimir Garagulya

      Добрый день, Алексей.

      Спасибо за информацию. Я как-то упустил этот момент. Со следующим обновлением поправлю.

      С уважением,
      Владимир.

      • Alexey Petrenko

        Спасибо.

  • Pingback: Опубликован User Role Editor 3.7 | ShinePHP.com - русское зеркало

  • Анатолий

    Вы так много знает о правах пользователей может подскажете как в режиме wordpress multisite поменять роль пользователя создающего блог на подкаталогах с администратора на редактора, очень необходимо.

    • http://shinephp.com Vladimir Garagulya

      Я исхожу из предположения, что у вас установлен и активирован для всей сети плагин “Редактор ролей пользователей”. Тогда добавьте в файл user-role-editor.php сразу после строки
      add_action( ‘wpmu_new_blog’, ‘duplicate_roles_for_new_blog’, 10, 2 );
      следующией код:

      function admin_to_editor($blog_id, $user_id) {
      switch_to_blog($blog_id);
      $user = new WP_User($user_id);
      if ($user->exists()) {
      $user->set_role(‘editor’);
      }
      restore_current_blog();
      }
      add_action( ‘wpmu_new_blog’, ‘admin_to_editor’, 10, 2 );

      В результате автоматически добавляемый во вновь создаваемый блог пользователь будет получать вместо ‘administrator’ роль ‘editor’.

  • http://miui.su/ Zenk

    Приветствую!
    У меня на сайте самодельный плагин. Как через РРП ограничить доступ к нему определенным группам пользователей?

    • http://shinephp.com Vladimir Garagulya

      День добрый,

      Плагин, определяя пункт меню, использует либо роль, либо пользовательское разрешение.

      Например,

      $thanks_page = add_options_page(‘Thank You Counter Button Settings’,
      ‘Thanks CB’, ‘create_users’, $base_name, ‘thanks_options’);

      Здесь ключевым является ‘create_users’, вот эту позицию и нужно включить
      в роль пользователя, чтобы предоставить ему доступ к плагину. Кроме
      этого нужно ещё разрешение, которое используется для доступа к меню в
      целом.

      С этим может помочь таблица из этой статьи

      http://shinephp.com/wordpress-admin-menu-permissions/

      Чтобы дать более точные рекомендации нужно взглянуть на код плагина.

  • Чеснок По-ЧесТному

    Мне необходимо определённой роли запретить постить везде, кроме одной рубрики. Как это сделать?

    • http://shinephp.com Vladimir Garagulya

      Спасибо за вопрос. Есть быстрый ответ, но он на английском. Если это для вас не проблема, то читайте здесь.
      http://shinephp.com/block-posting-to-selected-categories/
      Если список категорий не большой и редко меняется, то код можно использовать, как есть.
      Для более универсальной реализации список категорий для блокировки нужно получать программно из базы данных. Я опубликую пост на эту тему в ближайшие дни.

      • http://shinephp.com Vladimir Garagulya

        Статья на русском по блокировке списка рубрик/категорий для определенной роли доступна по этой ссылке http://ru.shinephp.com/block-categories-for-role/

  • Роман

    Как можно оставить пользователю в админке только права на изменение собственного профиля и Модерирования комментариев?
    Дело в том, что для модерирования комментов нужно установить права edit_others_posts, edit_published_posts,
    moderate_comments, read. Только moderate_comments и read не дают эффекта (тогда только просмотр комментов остается), а при полном наборе edit’ов пользователь уже может редактировать записи через меню, имеющееся сверху экрана у залогиненного пользователя при просмотре сайта (wpadminbar, см. картинку).

    • http://shinephp.com Vladimir Garagulya

      Совершенно верно. Право edit_post и сопряжённые с ним, являются здесь ключевыми. Судя по описанию, этот плагин может вам помочь
      http://chooseplugin.com/plugin-info/baw-moderator-role
      Хотя сам я его ещё не тестировал.

      • Роман

        Спасибо за наводку – это то, что нужно. Свои функции выполняет (появляется новая роль – Moderator с правами модерирования комментов).

        • http://shinephp.com Vladimir Garagulya

          Глянул исходный код. Роль Moderator в действительности наполнена указанными вами правами. Плагин прячет “лишние” для модератора комментариев пункты меню и блокирует прямой вызов скриптов, связанных с этими пунктами.
          Полезное дополнение к системе разграничения доступа WordPress.

  • sashic

    Плагин работает с custom post types и custom taxonomy?

    • http://shinephp.com Vladimir Garagulya

      Плагин работает с хранилищем прав и ролей. Если для custom post type определены особые права, то есть в определении пользовательского типа передан параметр типа
      ‘capability_type’ => ‘your_custom_cap’,
      то они будут работать в соотвествующих ролях после добавления всего нужного набора, описан здесь (english)
      http://shinephp.com/capabilities-set-for-custom-post-type/
      вручную через User Role Editor или программно.

  • Viktor

    Мои авторы видят только собственные посты и страницы, что превосходно. Но не так с галереями. Я использую плагин nextgen gallery. Нельзя ли как нибудь сделать так, чтобы каждый автор видел только свои собственные галерей? Они видят все, а это им незачем как и в слючае постов/статей.

    • http://shinephp.com Vladimir Garagulya

      Пока не знаю. За предложение спасибо. Посмотрю, что можно сделать. Но быстрой реализации не обещаю.

  • Виктор

    Нельзя ли сделать так, чтобы авторы видели только свои nextgen галерей, как и вслучае постов и страниц? Это очень удобно.

  • Serg

    Хороший плаг, но чего не хватает – импорта-экспорта ролей и прав юзеров.

    Не планируется?

    • http://shinephp.com Vladimir Garagulya

      Да, планирую добавить функционал экспорта-импорта. Но точный срок реализации пока назвать не могу.

  • Виталий

    Функция “применить ко всем сайтам” не работает.

    Роли изменяются только на основном сайте. На всех остальных сайтах сети роли остаются без изменений. Я использую WordPress MU 3.5.1 и User Role Editor 3.10
    Подскажите, пожалуста, в чем может быть проблема?

    • http://shinephp.com Vladimir Garagulya

      Странно, это 1-ый сигнал за более чем месяц после выпуска 3.10.
      “Применить ко всем сайтам” используется не как функция, а скорее как опция. Нужно включить этот checkbox, а затем включить/выключить какое-нибудь из разрешений (capabilities) выбранной роли и сохранить изменения, нажав кнопку “Update”. При включенном “применить ко всем сайтам” роли текущего сайта должны после этого записаться на все остальные сайты сети.

  • Vitek9208

    Добрый день!
    Подскажите пожалуйста, как убрать пункт “Добавить товар” для некоторых пользователей?

    • http://shinephp.com/ Vladimir Garagulya

      Добрый день,

      Какой плагин используете для работы с “Товарами”?