Limitar el acceso a entradas/páginas por roles de usuario

2 ago 2012, 11:20:06
Vistas: 24.9K
Votos: 5

Estoy buscando una manera de proteger el contenido según los roles de usuario.

Ejemplo:

hay que estar registrado para ver las entradas (frontend).

Si un usuario es suscriptor puede leer las entradas 1, 2 y 3, pero si el usuario es colaborador puede ver las entradas 1, 2, 3 y 4, 5, 6...

¿alguien sabe cómo puedo hacer esto?

0
Todas las respuestas a la pregunta 3
0

puedes usar estas condiciones para mostrar publicaciones privadas solo a usuarios registrados con el rol contributor. Ahora solo necesitas hacer la publicación private para que esa publicación esté disponible para el colaborador.

<?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' ) ) { //pasar el rol puede no funcionar en algunos casos
            the_title();
            the_content();
            } else {            // texto para mostrar en lugar de la publicación
                echo 'esta publicación es privada, solo los colaboradores pueden verla';
            }

        } else {        // esto es visible para todos
            the_title();
            the_content();
        }

    endwhile; 
    endif; 
?>
2 ago 2012 12:23:30
5

Aunque no lo he usado personalmente, probablemente estés buscando un plugin como este.

Parece que ofrece toda la funcionalidad que has solicitado anteriormente.

2 ago 2012 11:26:12
Comentarios

Acabo de probar este. No hace lo que necesito, pero casi... o... ¡demasiado complicado!

Demilio Demilio
2 ago 2012 11:30:05

Acabo de instalar el plugin y es muy fácil configurar el acceso a ciertas publicaciones para los suscriptores y luego dar más acceso a los colaboradores.

Vince P Vince P
2 ago 2012 11:48:07

sí, en el backend, pero necesito definir el acceso en el frontend. Quién puede o no puede leer publicaciones, definido por roles de usuario.

Demilio Demilio
2 ago 2012 11:56:19

Sí, puedes hacer eso con el plugin (Ver captura de pantalla en http://s.wordpress.org/extend/plugins/advanced-access-manager/screenshot-4.jpg?r=580686)

Vince P Vince P
2 ago 2012 12:22:33

¡Sin problemas, me alegro de que lo encontraras al final! :)

Vince P Vince P
2 ago 2012 12:37:45
0

Para lograr algo así puedes hacer que algunas publicaciones sean privadas y mostrarlas solo a usuarios registrados, primero necesitas agregar un campo personalizado, puedes nombrarlo "private" y darle el valor "True". Luego reemplaza el loop predeterminado de WP con este fragmento de código:

    <?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()) {
            // Mostrar publicación privada a usuario registrado
        }
    } else {
        // Mostrar publicación pública a todos
    }

endwhile; endif; ?>
7 feb 2016 15:55:40