Ограничение доступа к записям/страницам по ролям пользователей

2 авг. 2012 г., 11:20:06
Просмотры: 24.9K
Голосов: 5

Я ищу способ защитить контент с помощью ролей пользователей.

Пример:

пользователь должен быть зарегистрирован, чтобы просматривать записи (во фронтенде).

Если пользователь является подписчиком, он может читать записи 1, 2 и 3, но если пользователь является автором, он может просматривать записи 1,2,3 и 4,5,6...

кто-нибудь знает, как я могу это реализовать?

0
Все ответы на вопрос 3
0

вы можете использовать такие условия, чтобы показывать приватные записи только вошедшим пользователям с ролью contributor. Теперь вам нужно только сделать запись private, чтобы она стала доступна для участника.

<?php 
    if ( have_posts() ) : while ( have_posts() ) : the_post();
        $private = get_post_custom_values("private");
        if (isset($private[0]) && $private == "true") {

            if ( current_user_can( 'contributor' ) ) { //передача роли может иногда не работать
            the_title();
            the_content();
            } else {            // текст, который показывается вместо записи
                echo 'эта запись приватна, только участник может её просматривать';
            }

        } else {        // это видно всем
            the_title();
            the_content();
        }

    endwhile; 
    endif; 
?>
2 авг. 2012 г. 12:23:30
5

Хотя я лично не использовал это, вероятно, вам нужен плагин вроде такого.

Похоже, он предоставляет весь функционал, который вы запрашивали выше.

2 авг. 2012 г. 11:26:12
Комментарии

Я только что попробовал этот вариант. Он не делает то, что мне нужно, но почти... или... слишком сложный!!

Demilio Demilio
2 авг. 2012 г. 11:30:05

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

Vince P Vince P
2 авг. 2012 г. 11:48:07

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

Demilio Demilio
2 авг. 2012 г. 11:56:19

Да, вы можете это сделать с помощью плагина (см. скриншот по ссылке http://s.wordpress.org/extend/plugins/advanced-access-manager/screenshot-4.jpg?r=580686)

Vince P Vince P
2 авг. 2012 г. 12:22:33

Без проблем, рад что вы в итоге нашли решение! :)

Vince P Vince P
2 авг. 2012 г. 12:37:45
0

Чтобы реализовать подобное, вы можете сделать некоторые записи приватными и показывать их только авторизованным пользователям. Сначала вам нужно добавить произвольное поле, которое можно назвать "private" и установить значение "True". Затем замените стандартный цикл WordPress на этот фрагмент кода:

    <?php if (have_posts()) : while (have_posts()) : the_post();

    $private = get_post_custom_values("private");
    if (isset($private[0]) && $private == "true") {
        if (is_user_logged_in()) {
            // Отображать приватную запись для авторизованного пользователя
        }
    } else {
        // Отображать публичную запись для всех
    }

endwhile; endif; ?>
7 февр. 2016 г. 15:55:40