5

I'm looking for a way to protect content by user roles.

Example:

you have to be registered to view posts (frontend).

If a user is a subscriber he can read post 1, 2 and 3, but if the user is a contributor he can view post 1,2,3 and 4,5,6...

does anyone know how I can do this?

3 Answers 3

0

Although I haven't used this personally you are probably looking at a plugin like this

Seems to provide all the functionality you have requested above.

5
  • 1
    I've just tried this one. Doesnt do what I need, but almost... or.... to complicated!!
    – Demilio
    Commented Aug 2, 2012 at 8:30
  • I've just installed the plugin and it's very easy to set up access to certain posts for subscribers and then give more access to contributors.
    – Vince P
    Commented Aug 2, 2012 at 8:48
  • yes, backend, but I need to define access frontend. Who can or can not read posts, defined bu user roles.
    – Demilio
    Commented Aug 2, 2012 at 8:56
  • Yes you can do that with the plug in (See screenshot at s.wordpress.org/extend/plugins/advanced-access-manager/…)
    – Vince P
    Commented Aug 2, 2012 at 9:22
  • No problems, Glad you found it in the end! :)
    – Vince P
    Commented Aug 2, 2012 at 9:37
4

you can use such conditions to show private posts only to logged in users with role contributor. Now you only need to make post private to make that post available for contributor.

<?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' ) ) { //passing role to it may sometime not work
            the_title();
            the_content();
            } else {            // text to show instead the post
                echo 'this post is private, only contributor can view it';
            }

        } else {        // this is visible to all
            the_title();
            the_content();
        }

    endwhile; 
    endif; 
?>
0

To achieve something like that you can make some posts private and show them just to the logged in users, first you need to add a custom field, you can name it "private" and value it "True". Then add replace the default WP loop with this code snippet:

    <?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()) {
            // Display private post to logged user
        }
    } else {
        // Display public post to everyone
    }

endwhile; endif; ?>

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.