web-dev-qa-db-fra.com

Limiter l'accès aux publications/pages par rôles d'utilisateur

Je cherche un moyen de protéger le contenu par des rôles d'utilisateur.

Exemple:

vous devez être enregistré pour voir les messages (frontend).

Si un utilisateur est un abonné, il peut lire les articles 1, 2 et 3, mais si l'utilisateur est un contributeur, il peut afficher les articles 1, 2, 3 et 4, 5, 6 ...

est-ce que quelqu'un sait comment je peux faire ça?

3
Demilio

Bien que je n’ai pas utilisé cela personnellement, vous cherchez probablement un plugin comme celui-ci

Semble fournir toutes les fonctionnalités que vous avez demandées ci-dessus.

1
Vince Pettit

vous pouvez utiliser ces conditions pour afficher les publications privées uniquement aux utilisateurs connectés dotés du rôle contributor. Maintenant, il vous suffit de rendre post private pour rendre cette publication disponible pour le contributeur.

<?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; 
?>
4
amit

Pour réaliser quelque chose comme ça, vous pouvez rendre certaines publications privées et les montrer uniquement aux utilisateurs connectés. Vous devez d'abord ajouter un champ personnalisé, vous pouvez le nommer "privé" et le valoriser "Vrai". Puis ajoutez, remplacez la boucle par défaut WP par cet extrait de code:

    <?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; ?>
0
Zohair Baloch