Роли пользователей в WordPress

Отличительной чертой любой полнофункциональной системы управления содержимым (CMS) является возможность установки различных прав и полномочий для разных групп пользователей. Если рассматривать непосредственно WordPress, то в этой системе существует аналогичный механизм, который носит название пользовательских ролей (roles). Распределение пользовательский ролей имеет смысл лишь в том случае, если на сайте, помимо администратора, зарегистрированы и другие пользователи. Администратор обладает доступом ко всем возможностям WordPress; роли пользователей во многом ограничены. Если вы хотите, к примеру, чтобы некоторые пользователи могли только писать и публиковать статьи, вы можете присвоить им соответствующую роль, которая предоставит им возможность совершать заданное действие.

По умолчанию в WordPress существует шесть пользовательских уровней (если ни один из них вам не подходит, вы можете создать свой собственный уровень с помощью плагина User Role Editor): Super Admin (суперадминистратор), Administrator (администратор), Editor (редактор), Author (автор), Contributor (участник) и Subscriber (подписчик).

Подписчики (Subscriber) — это, по сути, обычные посетители сайта, которые могут читать статьи; на этом список их возможностей заканчивается. Участники (Contributor), в отличие от подписчиков, могут создавать, редактировать и удалять свои собственные записи, однако публиковать их они не могут — для этого запись должна быть просмотрена и опубликована автором или пользователем с более высокой ролью).

Авторы (Author) могут публиковать записи, загружать файлы, а также редактировать и удалять уже опубликованные записи. Редакторы (Editor), в отличие от авторов, обладают более широкими возможностями. Они наделены всеми полномочиями, связанными с публикацией и редактированием записей и страниц, модерацией комментариев, а также управлением рубриками и ссылками.

Администраторы представляют собой верхнее звено в цепи ролей и могут совершать неограниченные действия: управлять темами и плагинами, пользователями, настройками сайта и т.д. При назначении администраторов ресурса нужно проявлять максимальную осторожность и аккуратность.

Наконец, мы подошли к последней роли, которая появилась в WordPress 3.0 и стала отражением мультисайтинговой структуры. Эта роль носит название суперадминистратор (Super Admin). Суперадминистратор может управлять сетью и всеми входящими в нее сайтами (их пользователями, темами, настройками и т.д.).

Это описание не претендует на абсолютную полноту изложения и предназначено скорее для того, чтобы выработать у читателей общее представление о ролях, существующих в WordPress. Если вы желаете более подробно ознакомиться с функциями той или иной роли пользователей, советуем вам обратиться к кодексу.

Блог про WordPress
Комментарии: 74
  1. Лиза

    А где эти роли определены и как добавить новые?

    1. Дмитрий (автор)

      Эти роли определены в самом WordPress. Добавлять новые роли можно посредством функции add_role: http://codex.wordpress.org/Function_Reference/add_role.

  2. Регина

    Здравствуйте! Скажите пожалуйста, а если поставить роль нового пользователя участник или автор, при регистрации он может попасть в админ панель или нет? Просто я недавно столкнулась с тем, что у меня одна из моих записей попала в ту категорию, в которую я ее не ставила, а роль пользователя тогда стояла автор. Это может быть как то связано. Сайту нет месяца, на нем 2 новых пользователя, причем у них не стандартные имена, какие то странные я бы сказала. Спасибо заранее!

    1. Дмитрий (автор)

      Здравствуйте! Если у вас разрешена регистрация, то в панель администратора может попасть любой пользователь, вне зависимости от роли. Однако, дальше уже сама роль указывает на то, что он способен будет делать в админ-панели. Скажем, подписчик практически ничего не может делать в панели, только редактировать свой профиль.

      Авторы (Author) могут публиковать записи, загружать файлы, а также редактировать и удалять уже опубликованные записи.

      Авторами лучше назначать проверенных людей, а не абы кого, чтобы потом не было недоразумений.

  3. Регина

    Спасибо за ответ. Только я не много не понимаю, у меня сайт о кулинарии, а как сделать, чтобы человек мог регистрироваться на сайте, менять свой профиль, добавлять рецепты, но попасть в админку он не мог. То есть чтобы на сайте была панель пользователя. И чтобы на форуме мог участвовать с этими же данными?

    1. Дмитрий (автор)

      Если он зарегистрировался на сайте, то он уже будет иметь доступ к админке, но он в любом случае ничего там не увидит, если он подписчик. Чтобы он мог добавлять рецепты, надо ему ставить роль Участника. Тогда вы сможете просмотреть все, что он добавил, и одобрить в случае необходимости. Сам он одобрить не сможет.

      Способ без регистрации довольно сложный, делается вручную (хотя как-то попадался какой-то плагин, но сейчас уже не помню), и напоминает скорее просто форму для ввода данных, которая висит на сайте. Но через нее будет идти куча спама, да и ковыряться с кодом придется долго. Так что решайте сами, что удобнее.

  4. Регина

    Спасибо за внимание. Попробую разные варианты.

  5. Александр

    Доброго времени суток всем, принимаю любые советы от знатоков ворд пресс как установить ворд пресс по новой после ломки таблиц БД. Не удаётся восстановить блог, установка пишет ошибки и перенаправляет на новую установку. Заранее благодарю всех кто сможет чем нибудь помочь.

    1. Дмитрий (автор)

      Перегрузить WP, создать по новой базу данных и админа к ней.

  6. Катя

    Добрый вечер, подскажите, если я дам статус автор, то для того что бы им сделать запись нужно зайти в админ. панель? Если да, то возможно есть плагин, который облегчает данную задачу и например, в боковой панели выводит «добавить запись»? Спасибо

    1. Дмитрий (автор)

      Вообще, публикация осуществляется через админ. панель, но если вам нужно сделать это именно во фронтэнде, то тогда посмотрите следующий плагин: http://wordpress.org/plugins/front-end-publishing/
      или более продвинутый (правда, некоторые возможности платные)
      http://wordpress.org/plugins/wp-user-frontend/

  7. Катя

    Все получилось)))) Спасибо)))

    1. Дмитрий (автор)

      Пожалуйста!

  8. Катя

    Добрый вечер! еще вопрос)))извините, если замучила, поставила плагин все настроила)) все работает) Но при входе пользователь попадает в панель wordpressa, правда с ограниченгыми права. А как сделать, что при входе он оставался на сайте не переходя туда? Спасибо)

    1. Дмитрий (автор)

      Вот этого уже сказать не могу :)

      Смотрите настройки плагина, который вы взяли. Возможно, там есть пункт, который на это прямо указывает.

  9. Катя

    я взяла плагин http://wordpress.org/plugins/wp-user-frontend/. А в настройках все испробовала. Второй день сижу((((

    1. Дмитрий (автор)

      Хм, в описании плагина сказано:

      Gives ability to the user to create new post, edit post, edit profile from site frontend. So users doesn’t need to enter the admin panel. Everything they need to do can be done from the frontend.

      То есть, все можно делать через фронтэнд, не касаясь админки. Как именно — посмотрю на локальной сборке.

  10. Катя

    Буду ВАм очень благодарна)

  11. Дмитрий (автор)

    В разделе WP User Frontend — в самом верху выбираете пункт Others и там есть опция «Admin area access» с раскрывающимся списком. Поставьте Admin Only. Должно сработать.

  12. Катя

    Сделала, вышла как админ, затем зашел как пользователь и он мне выдал
    Access Denied. Your site administrator has blocked your access to the WordPress back-office, а именно Отказано в доступе. Администратор сайта заблокировал ваш доступ к WordPress бэк-офиса.
    Что делать? В чем моя ошибка?((((

    1. Дмитрий (автор)

      А добавлять записи с этого пользователя через отдельно настроенную страницу получается?

  13. Катя

    если честно не знаю как. Ну, и соответственно не пробывала)

    1. Дмитрий (автор)

      В том же самом разделе находится пункт Edit Page и там выбирается страница, с которой пользователи могут добавлять материалы.
      Выставляете там нужную страницу, и пользователи смогут добавлять с нее материалы, но войти в админку не смогут.
      P.s. На той странице надо будет разместить шорткод [ wpuf_editpost ] (пробелы уберите).

  14. Дмитрий (автор)

    Хотя у меня в локальной сборке все равно не отображается ничего, может опять модуль Apache какой-нибудь не подключен.

  15. Катя

    Edit Page — стоит та страница на которую они должны (пользователи) выходить, в самой странице стоит шорткод [wpuf_addpost], она выводит форму. Ничего не получается(((

    1. Дмитрий (автор)

      Нашел шорткод:

      [ wpuf_addpost ]

      Вот его поместите на страницу. И появится форма заполнения для добавки статьи. Как вы и писали.
      В общем, запрещаете пользователям вход в админку и вводите все данные в эту форму для добавления новых материалов. Настраивать поля формы можно в разделе Labels.

  16. Дмитрий (автор)

    Вот, собственно, справка по установке. Тут описано, какой шорткод отвечает за какую страницу. Можно создавать много таких страниц, которые будут делать определенное действие.

    http://wordpress.org/plugins/wp-user-frontend/installation/

  17. Катя

    Так все и сделано, но выводит не на страницу, которая указана в настройках, а на панель wordpressa.
    Если в настройках прописываю только админ, то выводит сообщение, что Администратор сайта заблокировал ваш доступ к WordPress бэк-офиса. А данные вроде ввела правильно.

    1. Дмитрий (автор)

      Так все правильно. Доступ закрыт в панели администратора, но страница-то доступна. Перейдите на нее в браузере и там уже вводите текст.

  18. Катя

    Видела я эту страницу, но мне не нужно столько страниц. Надо, что бы было только одна) Но, что — то пошло не так))

    1. Дмитрий (автор)

      Чуть выше отписался вам, заходите под пользователем, в админку ему вход заказан, но он может добавлять материалы со страницы, на которой поставлен [ wpuf_addpost ]

  19. Катя

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

    1. Дмитрий (автор)

      Нет, не могут, если поставлен доступ только админам.

    2. Жук Юрий

      Автор имеет доступ в админку блога, но только с ограниченными возможностями. Если автор добавляет новую статью, то он по любому должен зайти в админ панель, без этого никак.

      Бояться за то, что он там что-то отключит или переключит, сломает, взломает, не стоит, ведь его возможности, повторюсь, ограничены.

  20. Ксения

    Большое спасибо за обзор! Было очень любопытно почитать. Жаль, что вы закрыли регистрацию…

    1. Дмитрий (автор)

      А зачем регистрация, у меня все материалы и так доступны.

  21. Онегин

    А как удалить строчку под каждым постом: «Запись опубликована автором…итд». Как сделать, чтобы она вообще не отображалась, не до открывания записи, не после?
    Спасибо.

    1. Дмитрий (автор)

      Добавьте CSS (для темы twenty ten):

      .entry-meta .meta-sep, .entry-meta .author { display:none;}
  22. Онегин

    А если тема twenty twelve? и куда именно этот код добавить?

    1. Дмитрий (автор)

      Файл style.css — через редактор в панели администратора в самый конец файла. Должно сработать и в twelve. Если не сработает, отпишитесь, посмотрим, что можно будет сделать еще.

  23. Борис

    Возможно ли сделать так, что зарегистрированный пользователь — например автор- будет иметь возможность править только определенную страницу — вносить на нее определенный текст и т.д. Пользователь должен иметь возможность войти в админку через свой логин-пароль, попасть на определенную страницу и внести определенные изменения на странице — изменить текст, или или установить ссылки, или разместить рисунок и т.д. Предположим, что таких пользователей — десять человек, и у каждого своя страница.

    1. Дмитрий (автор)

      С помощью ролей пользователей можно делать все, что угодно. Есть плагины, позволяющие задавать для пользовательских ролей определенные полномочия.

  24. Борис

    порекомендуйте какие?

    1. Дмитрий (автор)

      http://wordpress.org/plugins/user-role-editor/

      Один из самых популярных и мощных. Но без PRO-версии выводит свою небольшую рекламу.

  25. Борис

    Спасибо за помощь

  26. despero

    не подскажете как можно вывести роль коментатора рядом с ником
    по ходу нужна функция которая будет определять роль коментатора по его идентификатору ?

    1. Дмитрий (автор)

      Для получения роли (по id) и вывода ее:

      
      <?php 
      $user = new WP_User( $user_id );
      $user_roles = $user->roles;
      $user_role = array_shift($user_roles);
      
      if ($user_role == 'administrator') {
              echo 'Administrator';
          } elseif ($user_role == 'editor') {
              echo 'Editor';
          } elseif ($user_role == 'author') {
              echo 'Author';
          } elseif ($user_role == 'contributor') {
              echo 'Contributor';
          } elseif ($user_role == 'subscriber') {
              echo 'Subscriber';
          } else {
              echo '<strong>' . $user_role . '</strong>';
          }
      ?>
      
  27. despero

    сорри за надоедливость ) но чето или я немного туплю или не фурычит
    в моей теме вся лабуда которая выводит аву ник коментатора и тд. находится в файле функций я собственно этот код туда и запихнул вот так это дело выглядит

          <div class="comment-author vcard">
             <?php echo get_avatar($comment,$size='48'); ?>
             <cite class="fn"><?php comment_author_link(); ?>:</cite>
    
    ВОТ СЮДА ЗАПИХНУЛ КОД 
    
          </div>
          <?php if ($comment->comment_approved == '0') : ?>
             <em><?php _e('Ваш комментарий ожидает модерации.') ?></em>
             <br />
          <?php endif; ?>
    
          <div class="comment-meta commentmetadata"><a href="<?php echo htmlspecialchars( get_comment_link( $comment->comment_ID ) ) ?>"><?php printf(__('%1$s к %2$s'), get_comment_date(),  get_comment_time()) ?></a><?php edit_comment_link('('.__('Редактировать', 'kubrick').')','  ','') ?></div>
    

    вобщем чето ниче не получилось (

    1. Дмитрий (автор)

      Попробуйте вставить в цикл в single.php:

      global $post;
      if ( user_can( $post->post_author, 'administrator' ) ) {
        echo 'Administrator';
      } elseif ( user_can( $post->post_author, 'editor' ) ) {
        echo 'Editor';
      } elseif ( user_can( $post->post_author, 'author' ) ) {
        echo 'Author';
      } elseif ( user_can( $post->post_author, 'contributor' ) ) {
        echo 'Contributor';
      } elseif ( user_can( $post->post_author, 'subscriber' ) ) {
        echo 'Subscriber';
      } else {
        echo '<strong>Гость</strong>';
      }
  28. despero

    та не эт не то… мне нужно именно в коментариях роли коментаторов (зарегистрированных) что бы выводились, а если в single то оно будет роль автора поста выводить я так понимаю …

    1. Дмитрий (автор)

      Ах, надо для комментаторов. Что-то я этот момент упустил:

      function get_role($user_id)
      {
          if(is_int($user_id))
          {
              $user = new WP_User( $user_id );
              if ( !empty( $user->roles ) && is_array( $user->roles ) ) 
              {
                  foreach ( $user->roles as $role )
                      echo $role;
              }
          }
          else
              echo "Что-то другое";
      }
  29. despero

    большое сенк»ю )

  30. Алена

    У меня на сайте последнее время регистрируются пользователи в качестве подписчиков.
    Вопрос зачем? Они и так могут читать статьи и оставлять комментарии. И формы регистрации у меня нет.
    Вероятно, им просто нужен доступ к моей админке?
    Как Вы думаете, мне теперь нужно по-быстрому менять логин, пароль, отключать возможность регистрации и удалять подписчиков? Или ничего страшного в этом нет?

    1. Дмитрий (автор)

      Ну если вам нужны спамеры, то тогда оставьте их. На практике вы можете просто закрыть регистрацию. Подписчики нужны, если у вас на сайте имеется система распределения ролей в сообществе, т.е. каждая роль может что-то делать. Если же у вас простой сайт со статьями, то в таком случае пользователи вам не нужны. Будут только базу данных забивать своей информацией.

  31. Алена

    Уже закрыла, спасибо за ответ.
    Теперь я другим развлекаюсь. Сменила логин и не могу войти в админку. Сменила на тот, что был раньше. Ошибку не выдает, просто немножечко подумает — и опять форма входа. Вероятно это из-за плагина, он блокирует мой ip

    1. Дмитрий (автор)

      Видимо, да. Если есть доступ по FTP, заходите в папку с плагинами, меняете название папки с тем плагином, который блокирует вход по IP, и тогда он автоматически отключится.

  32. Анастасия

    Всем добрый день!
    У меня такая же история, как и Алены…
    За день по 13 пользователей каких-то непонятных добавляются…
    И все с почты @yahoo.com! И все идентичные, например, blanchefleemannr5905@yahoo.com
    Я очень переживаю, как бы они мне вреда на сайт не внесли. Я столько над ним тружусь, а тут такое(
    Подскажите, как закрыть возможность регистрации, чтобы они от меня отстали?)

  33. Анастасия

    Я так понимаю, что нужно убрать галочку с этого пункта?
    Членство Любой может зарегистрироваться

    1. Дмитрий (автор)

      Да, все верно.

  34. Юрий

    Здравствуйте!
    Помогите советом. Надо:
    1. При подписке пользователя сайта на определенный лист рассылки (myMail) назначается своя (на выбор) роль пользователя. И наоборот — при отписке от листа рассылки, данная роль пользователя снимается.
    Буду благодарен за ответ.

    1. Дмитрий (автор)

      Вам лучше обратиться в таком случае к разработчикам MyMail Newsletter, поскольку это платный плагин. Не знаю, заложен ли в него данный функционал. Если нет, то здесь понадобится создавать целое расширение, что, опять же, надо просить у разработчиков плагина.

  35. Юрий

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

    1. Дмитрий (автор)

      Если вы премиальный пользователь, который купил их продукт, то будут. По крайней мере, подскажут вам путь решения этой задачи (какие хуки или фильтры данного плагина использовать и т.д.)

  36. Юрий

    в MyMail Newsletter есть работа с «action hook». Это можно использовать использовать? Скриншот — http://prntscr.com/89mnq1

    1. Дмитрий (автор)

      Это, я так понимаю, хук для того, чтобы инициировать рассылку писем в зависимости от какого-либо действия. В данном случае хук определяет событие, которое должно произойти, чтобы пошла рассылка. Но с его помощью не удастся задать условия для отписки или подписки пользователя. Не то событие. Надо подцеплять нужные условия именно к хуку, который отвечает за подписку/отписку пользователя, а какой это хук — знают только разработчики этого плагина. Ну либо ковыряться в коде, искать этот хук, после чего уже к нему подцеплять нужный функционал, который пишется на заказ.

  37. Юрий

    Спасибо, буду стучаться к разработчикам. Если не помогут, тогда буду договариваться с Вами. Это возможно? А так — Успехов Вам! У Вас очень полезный сайт!

    1. Дмитрий (автор)

      Я сам, к сожалению, разработку не беру. Советую Вам в таком случае обратиться к Systemo — моим партнерам. Баннер приведен у меня в сайдбаре справа. Они занимаются разработкой самых разных вещей.

  38. Евгений

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

  39. Серж

    Здравствуйте. А как дать пользователю возможность редактирования назначенных только ему одному Рубрики-категории (одной или несколько)?

    1. Дмитрий (автор)
      // Hook to save_post to do some checks
      add_action( 'pre_post_update','wpse315124_save_post_check' );
      function wpse315124_save_post_check( $post_id, $post_data ){
        // Check user's role and post's category
        if( 
              has_category ( 'some-category', $post_id ) &&
              current_user_can( 'editor' )
          ) {
            // Stop the script
            wp_die( __( 'You can not edit this post.' ) );
        }
      }

      Как-то так, только поменяйте some-category на свою.

    2. Дмитрий (автор)

      Или, если с кодом сложно, то вот плагин:

      https://wordpress.org/plugins/restrict-categories/

      1. Серж

        Я очень хотел бы, чтобы пользователь, назначенный админом, мог РЕДАКТИРОВАТЬ определенную рубрику (или несколько рубрик-категорий), назначенных также админом.. Плагин просто назначает определенную рубрику для записей, а мне нужно чтобы этот же юсер смог эту рубрику и редактировать.. Спасибо…

        1. Дмитрий (автор)

          Из описания плагина:

          Restrict Categories is a plugin that allows you to select which categories users can view, add, and edit in the Posts edit screen.

          Edit тоже есть.

  40. Серж

    Спасибо Вам за наводку на плагин.. Конечно, там еще думать надо как его применить под себя, но, полезная штука.. У меня просто каталог песен, а сами исполнители или авторы текстов прописаны в рубриках, и соответственно есть авторы — юсеры, которым админ назначил рубрики, которые хочется отдать им (авторам-юсерам) на «растерзание», то есть чтобы они сами могли их редактировать (биография, фото, описание и т.д.).. Но, пока сложно это реализовать…

Добавить комментарий для Борис Отменить ответ

Получать новые комментарии по электронной почте.