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

Дата публикации:Июль 21, 2011

Отличительной чертой любой полнофункциональной системы управления содержимым (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. Если вы желаете более подробно ознакомиться с функциями той или иной роли пользователей, советуем вам обратиться к кодексу.

Поделиться

68 комментариев

  1. Лиза says:

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

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

    • Architect Of Ruin says:

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

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

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

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

    • Architect Of Ruin says:

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

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

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

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

  6. Катя says:

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

  7. Катя says:

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

  8. Катя says:

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

    • Architect Of Ruin says:

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

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

  9. Катя says:

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

    • Architect Of Ruin says:

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

      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. Катя says:

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

  11. Architect Of Ruin says:

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

  12. Катя says:

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

    • Architect Of Ruin says:

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

  13. Катя says:

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

    • Architect Of Ruin says:

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

  14. Architect Of Ruin says:

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

  15. Катя says:

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

    • Architect Of Ruin says:

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

      [ wpuf_addpost ]

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

  16. Architect Of Ruin says:

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

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

  17. Катя says:

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

    • Architect Of Ruin says:

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

  18. Катя says:

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

    • Architect Of Ruin says:

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

  19. Катя says:

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

    • Architect Of Ruin says:

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

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

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

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

  21. Онегин says:

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

  22. Онегин says:

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

    • Architect Of Ruin says:

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

  23. Борис says:

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

    • Architect Of Ruin says:

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

  24. Борис says:

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

  25. Борис says:

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

  26. despero says:

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

    • Architect Of Ruin says:

      Для получения роли (по 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 says:

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

          <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>
    

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

    • Architect Of Ruin says:

      Попробуйте вставить в цикл в 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 says:

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

    • Architect Of Ruin says:

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

      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 says:

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

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

    • Дмитрий says:

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

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

    • Дмитрий says:

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

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

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

  34. Юрий says:

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

    • Дмитрий says:

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

  35. Юрий says:

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

    • Дмитрий says:

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

  36. Юрий says:

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

    • Дмитрий says:

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

  37. Юрий says:

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

    • Дмитрий says:

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

  38. Евгений says:

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

Оставить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Получать новые комментарии по электронной почте. Вы можете подписаться без комментирования.