restreindre l’acces d’une categorie aux membres connectes (Créer un compte)

  • Statut : non résolu
15 sujets de 1 à 15 (sur un total de 22)
  • Auteur
    Messages
  • #450430
    jpicot
    Participant
    Padawan WordPress
    77 contributions

    Ma configuration WP actuelle
    – Version de WordPress : 2.0.7
    – Thème utilisé : perso adaptation de aquafluid
    – Plugins en place : lightbox
    – Nom de l’hebergeur : free

    Bonjour,

    comme j’ai déjà vu des posts sur le sujet je vous livre ma méthode pour restreindre l’accès d’une catégorie aux seuls membres connectés.
    problématique : je veux une catégorie pour laquelle on puisse voir uniquement la liste des articles qu’elle contient et un résumé (ou rien) du contenu. la lecture du post ne doit être possible que si on est connecté et qu’on possède le niveau requis (auteur Ok, contributeur NOK par exemple)

    la modification porte sur 3 classes de votre thème :
    date.php /* pour les archives */ et single.php /* pour les articles */
    /* la modif est identique pour ces 2 fichiers */
    category-X.php (ou X est le numéro de la catégorie à filtrer)

    le principe :
    créer une catégorie dédiée et noter son ID (par ex :12)
    créer un fichier category-12.php et copier dedans le contenu de category.php
    modifier le code pour n’afficher que le titre et le résumé (excerpt) si le user n’est pas autorisé

    comment faire :
    après la ligne foreach ajouter :
    ID) ) {?>
    cette ligne autorise l’affichage pour les users connectés ayant la capacite publish_posts
    pour + d’infos sur les capacités voir ici

    au milieu le code ne change pas : affichage normal

    avant la ligne endforeach ajouter le code qui sera exécuté si le user n’est pas autorisé

    le code pour afficher ce que vous voulez (voir ci dessous)

    la modification est quasi identique pour les 2 autres fichiers seul le test change : on teste en + la catégorie
    ID)) { ?>

    Attention !!! sauvegardez vos fichiers avant toute modification : il est facile de se planter de ligne…

    vous pouvez voir le resultat sur mon site categorie Espace Membres article : test espace membres

    en espérant que ce code soit utile aux membres de ce forum, n’hésitez pas a me faire part de vos impressions, critiques, améliorations etc..

    voici le code de date.php et single.php :

    <?php if ($posts) : foreach ($posts as $post) : start_wp(); ?>
    				<?php if ( !in_category(12) || current_user_can('publish_posts', $post->ID)) { ?>
    					<div class="post">
    				        <h2 class="post-title"> <a href="<?php the_permalink() ?>” rel=”bookmark” title=”Permanent Link: <?php the_title(); ?>“><?php the_title(); ?></a> </h2>				
    						<div class="post-content"><?php the_content('Lire la suite »'); ?>	</div>
            				<p class="post-info">
              				<em><?php the_time('l d M Y'); ?></em> | <em class="user"><?php the_author_posts_link() ?></em> | <em class="cat"><?php the_category(', ') ?></em> <?php edit_post_link(); ?></p>
    					</div>
    				<?php } else { ?>
    					<div class="post">
            				<h2 class="post-title"> <?php the_title(); ?> </h2>	
    						<div class="post-content"><?php the_excerpt(); ?></div>
    	        			<p class="post-info"> <em><?php the_time('l d M Y'); ?></em> | <em class="user"><?php the_author_posts_link() ?></em> | <em class="cat"><?php the_category(', ') ?></em> <?php edit_post_link('modifier'); ?></p>
    						<h3 align="center">Pour lire cet article vous devez vous connecter au préalable.</h3>
    					</div>
    				<?php } ?>
    			<?php endforeach; else: ?>

    et celui de category-12.php :

    <?php if ($posts) : foreach ($posts as $post) : start_wp(); ?>
    			<?php if ( current_user_can('publish_posts', $post->ID) ) {?>
    				<div class="post">
            			<h2 class="post-title">          
              			<a href="<?php the_permalink() ?>” rel=”bookmark” title=”Permanent Link: <?php the_title(); ?>“><?php the_title(); ?></a>
            			</h2>				
    					<div class="post-content"> <?php the_content('Lire la suite »'); ?> </div>
            			<p class="post-info">
            			<em><?php the_time('l d M Y'); ?></em> | <em class="user"><?php the_author_posts_link() ?></em> | <em class="cat"><?php the_category(', ') ?></em>
    					<?php edit_post_link(); ?></p>
    				</div>
    			<?php } else { ?>
    				<div class="post">
            			<h2 class="post-title"> <?php the_title(); ?> </h2>	
    					<div class="post-content"><?php the_excerpt(); ?></div>
            			<p class="post-info"> <em><?php the_time('l d M Y'); ?></em> | <em class="user"><?php the_author_posts_link() ?></em> | <em class="cat"><?php the_category(', ') ?></em> <?php edit_post_link('modifier'); ?></p>
    					<h3 align="center">Pour lire cet article vous devez vous connecter au préalable.</h3>
    				</div>
    			<?php }  ?>
    		<?php endforeach; else: ?>

    #591166
    AmO
    Participant
    Maître WordPress
    4451 contributions

    Sympa mais c’est pas le plus simple.

    Je déplace dans truc et astuces 🙂

    #591168
    jpicot
    Participant
    Padawan WordPress
    77 contributions
    AmO wrote:
    Sympa mais c’est pas le plus simple.

    salut Amo,

    effectivement ca va mieux dans trucs et astuces..
    j’ai écrit ce code (que je ne trouve pas trop compliqué meme si j’ai mis beaucoup de bla bla dans mon post pour expliquer) parcque justement je ne trouvais pas de solution à mon problème, peux tu me donner ta solution pour ma culture perso stp ? 🙂
    merci..

    #591169
    AmO
    Participant
    Maître WordPress
    4451 contributions

    Pour la catégorie 12, et les utilisateurs de niveau 5

    
           5 ) : ?>
            Blabla
          
            Pas le droit
          
    
    Autre catégorie

    #591167
    jpicot
    Participant
    Padawan WordPress
    77 contributions

    effectivement, ca evite de créer une category specifique et je reconnais que l’usage de $user_level pour tester est plus propre… je debute sous wp, j’ai encore bcp a apprendre 😕
    merci de ta réponse en tous cas 😉

    #591170
    bway
    Participant
    Initié WordPress
    44 contributions

    On peut aussi faire la même chose avec $user_ID pour ne definir que les utilisateurs enregistrés.

    #591171
    AmO
    Participant
    Maître WordPress
    4451 contributions

    bway > Il existe pleins d’autre possibilités 😉

    jpicot > Tout le monde est la pour apprendre, ca tombe bien.

    #591172
    jolinary
    Membre
    Initié WordPress
    31 contributions

    Je vais tester cela 🙂 par contre je voulais savoir est il possible de faire cela pour certains membres ? autre que par cathegorie ou niveau de level en faite ?
    merci

    #591173
    dedhale
    Participant
    Initié WordPress
    5 contributions

    Bonjour, je me permets de rebondir sur ce post pour poser ma petite question. En fait c’est à peu près la même chose, mais n’y connaissant rien au php (je sais bidouiller, pas créer, et c’est pas mon métier lol, je suis graphiste), je préfère poser la question.

    En fait j’aimerai qu’un utilisateur ne puisse voir que les billets que d’UNE seule catégorie! Est-ce possible?

    Merci beaucoup

    #591174
    jpicot
    Participant
    Padawan WordPress
    77 contributions

    voici une solution en testant le nom du user avec la variable $user_login, a combiner selon les besoins 🙂

    Code: php
    
          
          		afficher la page
          
          		ne pas afficher
          

    pour que le user toto ne voit que les billets de la categorie 12
    les visiteurs non connectes ne voient rien, toto voit la categorie 12 uniquement, les autres voient toutes les catégories

    Code: php

    en esperant que cet exemple reponde a vos questions 😉

    #591175
    dedhale
    Participant
    Initié WordPress
    5 contributions

    pour que le user toto ne voit que les billets de la categorie 12
    les visiteurs non connectes ne voient rien, toto voit la categorie 12 uniquement, les autres voient toutes les catégories

    Code: php

    en esperant que cet exemple reponde a vos questions 😉

    Pour les visiteurs, ce n’est pas trop grave, le blog est totalement fermé. J’ai un peu détourné le rôle premier de wordpress pour créer un petit espace de travail virtuel pour notre collectif. Pour pouvoir débattre sur les projets en cours et garder une trace. (en changeant tout le design etc…)

    Et c’est dans l’optique d’amener des clients à venir poster un commentaire sur leurs projets, et de voir l’avancée des travaux, de leur fournir les fichiers pour l’impression, etc…, que j’aimerai les empêcher d’avoir accès à tout le blog. Ils ne pourront voir que la catégorie qui porte leur nom. Point 🙂

    Malheureusement le code fait planter tout le bazar… :s
    Ou dois-je incorporer le code? Dans plusieurs pages? index? single?

    J’ai un peu tout essayer pour être franc et chaque fois j’ai une erreur à la dernière ligne de la page…

    Une idée?

    #591176
    jpicot
    Participant
    Padawan WordPress
    77 contributions

    tu ne dois pas le mettre au bon endroit, essaie d’inserer le code dans single.php de ton theme après cette ligne :

    
        
                     le code pour afficher le post
        
                     le code si on n’affiche pas le post
        

    attention a bien positionner les balises fermantes ca peut aussi etre ca qui te fait planter
    au début php + wordpress nécessitent une période d’adaptation pendant laquelle on ne comprend pas grand chose, puis ca s’eclaire en lisant la doc et en parcourant le forum donc tu vas y arriver 😎

    #591177
    dedhale
    Participant
    Initié WordPress
    5 contributions

    J’ai toujours un message d’erreur :(

    #591178
    Nemi
    Membre
    Initié WordPress
    11 contributions

    Puisque j’ai été renvoyée ici… 😋

    En fait j’avais lu ce post mais je pensais qu’il ne répondait pas tout à fait à mes besoins et comme je n’ai pas la possibilité d’essayer avant quelques jours…

    Je voulais que les utilisateurs n’aient pas du tout accès à l’admin et je ne sais pas si c’est possible.

    Exemple concret:

    Mr Machin arrive sur le blog et veut accéder à la catégories “Adresses” qui est une catégorie privée.
    – Soit il clique sur la catégorie dans la sidebar et une pop-up s’affiche demandant login/password.
    – Soit il entre login + password sur la sidebar puis connexion
    dans les 2 cas il est redirigé automatiquement sur la page sur laquelle il s’est identifié mais version “connecté”.

    Poussib’ ? Pô poussib’ ?

    Merci.

    #591179
    jpicot
    Participant
    Padawan WordPress
    77 contributions

    désolé, je n’avais pas bien compris ta demande 😋
    je ne connais pas de solution directe, mais les experts de ce forum ont peut être une idée ?
    je pense qu’il faudrait intégrer le contrôle de l’utilisateur dans la page à afficher et ne pas passer par le module d’identification :
    si l’utilisateur n’est pas connecté, afficher la demande d’identification dans la page et réafficher celle-ci apres controle.

15 sujets de 1 à 15 (sur un total de 22)
  • Le forum ‘Dépôts pour les extensions, trucs, astuces’ est fermé à de nouveaux sujets et réponses.