Как отличить роли пользователей в WordPress? - PullRequest
1 голос
/ 03 февраля 2009

Я пытаюсь ограничить контент, который могут видеть подписчики, но ничего, что я делаю, похоже, не работает. Я часами тралял в Интернете и использовал код WordPress, но все безрезультатно. Кто-нибудь знает, как я смогу пойти по этому поводу?

В идеале структура кода должна выглядеть следующим образом:

if(get_role() = 'subscriber'){
    redirect
}

Спасибо

Кстати, я пробовал get_role ($ role), и это не работает для меня.

Ответы [ 3 ]

2 голосов
/ 04 февраля 2009

Я использовал current_user_can для этого. Здесь есть список ролей и возможностей:

http://codex.wordpress.org/Roles_and_Capabilities#Capabilities:_5

Таким образом, поскольку все пользователи с уровнем выше «подписчик» могут редактировать сообщения, одним из способов удовлетворения изложенных вами требований будет:

if (!current_user_can('edit_posts')){

//redirect, error, etc as you like

}
0 голосов
/ 04 февраля 2009

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

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

0 голосов
/ 03 февраля 2009

обновление : есть функция current_user_can(capability), которую вы можете использовать, чтобы узнать, что пользователь может и не может делать. я бы подумал, что вам нужно будет добавить еще одну роль или возможность.

попробуйте следующее:

if ('subscriber' == get_role()) {
    # do whatever
}

= назначение
== сравнение

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...