Annonce

Important : WordPress 2.5.1 est disponible.
Annonce 1 : Le Codex en français a besoin de vous pour avancer !
Annonce 2 : Avant de poster, n'oubliez pas de faire une petite Recherche et de lire les règles de ce forum.

#1 03-02-2007 14:34:11

jpicot
Connaisseur WP
Lieu: Bordeaux
Date d'inscription: 17-12-2006
Messages: 24
Site web

restreindre l'acces d'une categorie aux membres connectes

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 :
<?php if ( current_user_can('publish_posts', $post->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é
<?php } else { ?>
le code pour afficher ce que vous voulez (voir ci dessous)
<?php }  ?>

la modification est quasi identique pour les 2 autres fichiers seul le test change : on teste en + la catégorie
<?php if ( !in_category(12) || current_user_can('publish_posts', $post->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 :

Code:

  1.       <?php if ($posts) : foreach ($posts as $post) : start_wp(); ?>
  2.         <?php if ( !in_category(12) || current_user_can('publish_posts', $post->ID)) { ?>
  3.           <div class="post">
  4.                 <h2 class="post-title"> <a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link: <?php the_title(); ?>"><?php the_title(); ?></a> </h2>    
  5.             <div class="post-content"><?php the_content('Lire la suite »'); ?>  </div>
  6.                 <p class="post-info">
  7.                   <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>
  8.           </div>
  9.         <?php } else { ?>
  10.           <div class="post">
  11.                 <h2 class="post-title"> <?php the_title(); ?> </h2> 
  12.             <div class="post-content"><?php the_excerpt(); ?></div>
  13.                 <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>
  14.             <h3 align="center">Pour lire cet article vous devez vous connecter au pr&eacute;alable.</h3>
  15.           </div>
  16.         <?php } ?>
  17.       <?php endforeach; else: ?>

et celui de category-12.php :

Code:

  1.     <?php if ($posts) : foreach ($posts as $post) : start_wp(); ?>
  2.       <?php if ( current_user_can('publish_posts', $post->ID) ) {?>
  3.         <div class="post">
  4.               <h2 class="post-title">         
  5.                 <a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link: <?php the_title(); ?>"><?php the_title(); ?></a>
  6.               </h2>    
  7.           <div class="post-content"> <?php the_content('Lire la suite »'); ?> </div>
  8.               <p class="post-info">
  9.               <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>
  10.           <?php edit_post_link(); ?></p>
  11.         </div>
  12.       <?php } else { ?>
  13.         <div class="post">
  14.               <h2 class="post-title"> <?php the_title(); ?> </h2> 
  15.           <div class="post-content"><?php the_excerpt(); ?></div>
  16.               <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>
  17.           <h3 align="center">Pour lire cet article vous devez vous connecter au pr&eacute;alable.</h3>
  18.         </div>
  19.       <?php }  ?>
  20.     <?php endforeach; else: ?>

Hors ligne

 

#2 03-02-2007 21:40:19

AmO
Joueur de pétanque.
Lieu: France - Nord
Date d'inscription: 19-09-2005
Messages: 5033
Site web

Re: restreindre l'acces d'une categorie aux membres connectes

Sympa mais c'est pas le plus simple.

Je déplace dans truc et astuces smile


Mais vous savez, je crois pas qu'il y ait de bon ou mauvais blog... Enfin si je devais résumer ma vie aujourd'hui avec vous, je dirais que c'est d'abord des rencontres, des blogs qui m'ont tendu la main peut être à un moment où je ne pouvais pas, où j'étais seul chez moi.
http://www.wordpress-fr.net/wp-content/uploads/jmwp.jpg
WP-Box: Travailler avec un spécialiste des technologies WordPress !

Hors ligne

 

#3 04-02-2007 11:28:08

jpicot
Connaisseur WP
Lieu: Bordeaux
Date d'inscription: 17-12-2006
Messages: 24
Site web

Re: restreindre l'acces d'une categorie aux membres connectes

AmO a écrit:

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 ? smile
merci..

Hors ligne

 

#4 04-02-2007 14:37:00

AmO
Joueur de pétanque.
Lieu: France - Nord
Date d'inscription: 19-09-2005
Messages: 5033
Site web

Re: restreindre l'acces d'une categorie aux membres connectes

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

Code: php

  1. <?php if ( is_category('12') ); ?>
  2.       <?php if ( $user_level > 5 ) : ?>
  3.         Blabla
  4.       <?php else : ?>
  5.         Pas le droit
  6.       <?php endif; ?>
  7. <?php else : ?>
  8. Autre catégorie
  9. <?php endif; ?>

Mais vous savez, je crois pas qu'il y ait de bon ou mauvais blog... Enfin si je devais résumer ma vie aujourd'hui avec vous, je dirais que c'est d'abord des rencontres, des blogs qui m'ont tendu la main peut être à un moment où je ne pouvais pas, où j'étais seul chez moi.
http://www.wordpress-fr.net/wp-content/uploads/jmwp.jpg
WP-Box: Travailler avec un spécialiste des technologies WordPress !

Hors ligne

 

#5 04-02-2007 19:22:19

jpicot
Connaisseur WP
Lieu: Bordeaux
Date d'inscription: 17-12-2006
Messages: 24
Site web

Re: restreindre l'acces d'une categorie aux membres connectes

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 hmm
merci de ta réponse en tous cas  wink

Hors ligne

 

#6 04-02-2007 20:40:45

bway
Habitué WP
Lieu: 75011
Date d'inscription: 03-02-2007
Messages: 50
Site web

Re: restreindre l'acces d'une categorie aux membres connectes

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


"Mais vous savez, je crois pas qu'il y ai de bon ou mauvais bloggeur... Enfin si je devais résumer, je dirais que c'est d'abord des blogs, des bugs et beaucoup de superflux pour un module qui offre déjà à l'origine, suffisament de possibilités."

Hors ligne

 

#7 04-02-2007 22:33:12

AmO
Joueur de pétanque.
Lieu: France - Nord
Date d'inscription: 19-09-2005
Messages: 5033
Site web

Re: restreindre l'acces d'une categorie aux membres connectes

bway > Il existe pleins d'autre possibilités wink

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


Mais vous savez, je crois pas qu'il y ait de bon ou mauvais blog... Enfin si je devais résumer ma vie aujourd'hui avec vous, je dirais que c'est d'abord des rencontres, des blogs qui m'ont tendu la main peut être à un moment où je ne pouvais pas, où j'étais seul chez moi.
http://www.wordpress-fr.net/wp-content/uploads/jmwp.jpg
WP-Box: Travailler avec un spécialiste des technologies WordPress !

Hors ligne

 

#8 09-02-2007 17:06:35

jolinary
Connaisseur WP
Date d'inscription: 15-01-2007
Messages: 32

Re: restreindre l'acces d'une categorie aux membres connectes

Je vais tester cela smile 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

Hors ligne

 

#9 18-02-2007 14:43:35

dedhale
Membre WP
Date d'inscription: 16-02-2007
Messages: 5

Re: restreindre l'acces d'une categorie aux membres connectes

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

Hors ligne

 

#10 18-02-2007 22:25:42

jpicot
Connaisseur WP
Lieu: Bordeaux
Date d'inscription: 17-12-2006
Messages: 24
Site web

Re: restreindre l'acces d'une categorie aux membres connectes

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

Code:

  1. Code: php
  2.  
  3.       <?php if ( $user_login == 'toto' ) ?>
  4.           afficher la page
  5.       <?php else : ?>
  6.           ne pas afficher
  7.       <?php endif; ?>

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:

  1. Code: php
  2. <?php if ( $user_login != "" && ($user_login != 'toto' || in_category(12))) { ?>

en esperant que cet exemple reponde a vos questions wink

Dernière modification par jpicot (18-02-2007 22:26:50)

Hors ligne

 

#11 19-02-2007 03:07:24

dedhale
Membre WP
Date d'inscription: 16-02-2007
Messages: 5

Re: restreindre l'acces d'une categorie aux membres connectes

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:

  1. Code: php
  2. <?php if ( $user_login != "" && ($user_login != 'toto' || in_category(12))) { ?>

en esperant que cet exemple reponde a vos questions wink

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 smile

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?

Hors ligne

 

#12 19-02-2007 09:07:11

jpicot
Connaisseur WP
Lieu: Bordeaux
Date d'inscription: 17-12-2006
Messages: 24
Site web

Re: restreindre l'acces d'une categorie aux membres connectes

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

Code:

  1. <?php if ($posts) : foreach ($posts as $post) : start_wp(); ?>
  2.     <?php if ( $user_login != "" && ($user_login != 'toto' || in_category(12))) { ?>
  3.                  le code pour afficher le post
  4.     <?php } else { ?>
  5.                  le code si on n'affiche pas le post
  6.     <?php } ?>
  7. <?php endforeach; else: ?>

attention a bien positionner les balises fermantes <?php } ?>  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 cool

Hors ligne

 

#13 19-02-2007 13:17:24

dedhale
Membre WP
Date d'inscription: 16-02-2007
Messages: 5

Re: restreindre l'acces d'une categorie aux membres connectes

J'ai toujours un message d'erreur sad

Hors ligne

 

#14 19-02-2007 16:44:53

Nemi
Connaisseur WP
Date d'inscription: 15-07-2006
Messages: 11
Site web

Re: restreindre l'acces d'une categorie aux membres connectes

Puisque j'ai été renvoyée ici... tongue

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.

Hors ligne

 

#15 19-02-2007 23:29:17

jpicot
Connaisseur WP
Lieu: Bordeaux
Date d'inscription: 17-12-2006
Messages: 24
Site web

Re: restreindre l'acces d'une categorie aux membres connectes

désolé, je n'avais pas bien compris ta demande tongue
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.

Hors ligne

 

#16 21-02-2007 07:22:35

Nemi
Connaisseur WP
Date d'inscription: 15-07-2006
Messages: 11
Site web

Re: restreindre l'acces d'une categorie aux membres connectes

C'est plus ou moins exactement tout à fait ça.

Mais il se trouve que, autant ajouter une ligne de code dans une sidebar ne me pose pas de problème a priori, autant faire un truc pareil, c'est tout à fait au-delà des mes capacités.

A vot' bon coeur... big_smile

Hors ligne

 

#17 24-08-2007 10:43:41

nx2006
Membre WP
Date d'inscription: 24-08-2007
Messages: 2

Re: restreindre l'acces d'une categorie aux membres connectes

Bonjour
je cherchais un moyen de personnaliser le contenu en fonction des droits des utilisateurs.
si le user n'est pas enregistré (user_level=0) :  afficher : bonjour vous devez vous enregistrer
si le user est enregistré mais que je n'ai pas validé son inscription (user_level=1) : bonjour, votre inscription est en cours de validation
si j'ai validé l'inscription (user_level=2) : afficher tout le contenu

avec le code ci-dessous, ça marche tres bien dans la page index.php

Code:

  1. Code: php
  2.       <?php if ( $user_level > 1 ) : ?>
  3.         Blabla
  4.       <?php else : ?>
  5.         Pas le droit
  6.       <?php endif; ?>

mais quand j'essaie de personnaliser le header.php ou le sidebar.php, ça ne marche pas.

question 1 : Avez vous une explications, C'est comme si la fonction user_level n'était pas reconnu dans ces modules.
?
question 2 : existe-t-il un plugin qui envoie un mail d'avertissement au webmester à chaque nouvel inscription d'un utilisateur?

Merci à tous
xavier
version utilisée wp2.2

Hors ligne

 

#18 24-08-2007 12:19:54

dlo
Blogodépendant
Date d'inscription: 10-04-2007
Messages: 1329

Re: restreindre l'acces d'une categorie aux membres connectes

Bonjour,

Question 1: Il faut déclarer la variable $user_level comme global avant de l'utiliser.

Question 2: C'est le fonctionnement par défaut de WordPress, pas besoin de plugin.

Cordialement


Non, je ne suis pas blogodépendant... C'est juste que je n'ai toujours pas trouvé la sortie de ce forum !

Hors ligne

 

#19 25-08-2007 22:58:23

nx2006
Membre WP
Date d'inscription: 24-08-2007
Messages: 2

Re: restreindre l'acces d'une categorie aux membres connectes

merci dlo
ça marche tres bien.
question 1 : effectivement, en déclarant la variable, ça marche, meme si je ne comprends pas pourquoi ça passait sur index.php mais pas sur header.php
question 2 : en fait j'avais un problème de messagerie

Hors ligne

 

#20 25-08-2007 23:32:50

Mistic100
Connaisseur WP
Date d'inscription: 29-05-2007
Messages: 22
Site web

Re: restreindre l'acces d'une categorie aux membres connectes

Bonsoir
pour revenir au sujet de ce message, je vais passer pour un noob tongue mais ...
ils se trouvent ou le fichiers date.php single.php et category.php ?

edit : bon j'ai trouvé category (dans wp-includes c'est ca ?) j'ai trouvé aussi single mais il n'y en a pa dans mon theme (Vistered) je suppose que je dois le créer. et date il faut aussi le créer mais ou ?

Merki

Dernière modification par Mistic100 (25-08-2007 23:38:19)


http://strangeplanet.fr/files/strangepa.png

Hors ligne

 

Pied de page des forums

Propulsé par PunBB 1.2.17
© Copyright 2005-2006 WordPress France

Tous droits réservés - wordpress-fr.net © 2005-2006

  • RSS
WPfr ValidatorXhtml ValidatorCSS mysql Php GetFirefox
Design par AmO - Crédits - Equipe WordPress France

Réseau International : Hongrie - Allemagne - Grèce - Italie - Japon - Corée - Suisse - Turquie - USA