Accès à des pages restreint selon les groupes BP

7 sujets de 1 à 7 (sur un total de 7)
  • Auteur
    Messages
  • #5934
    Photo du profil de E.
    E.
    Participant

    Bonjour,

    je rencontre à nouveau un souci et tourne un peu en rond avec tout ce qui est proposé. Je cherche à créer des pages dont l’accès serait restreint en fonction des groupes créés par buddypress.

    J’ai lu le sujet http://bp-fr.net/agora/sujet/restriction-dacces-a-des-pages-ou-article-selon-lappartenance-a-des-groupes/ mais n’y aie pas trouvé de réponse à mon souci ou pas claire du tout du tout (moi et le code… je commence tout juste).

    J’ai également le plugin s2members d’installer qui permet de restreindre l’accès à certaines pages… mais en fonction de l’abonnement et pas des groupes. Je trouve ca d’ailleurs vraiment dommage. Réinstaller un autre plugin m’agacerait profondément, mon but avec s2members et buddypress étant de gérer un tout sans trop de plugins justement…

    Mon « cahier des charges » étant :
    1 – créer une communauté qui puisse partager, s’échanger des messages privés, avoir des profils persos éditables par eux mêmes en frontend sans passer par la panneau d’admin, et plus tard un forum : ça, c’est permis par buddypress qui remplit pleinement son office
    2 – création de groupes privés : buddypress le permet aussi
    3 – avoir une gestion d’abonnement possible qui permette : de limiter l’accès de certaines parties à toute personne inscrite, souscription membres alors gratuite, et gestion d’abonnement payants pour avoir accès à d’autres parties plus spécifiques, voire achat unique d’un produit sur une page : s2members le permet
    4 – avoir une gestion d’abonnement newsletter : là pas encore trouvé mais mailchimp fera l’affaire je pense
    5 – créer des pages dont l’accès ne dépend plus de l’abonnement ou de la souscription membres (pas uniquement) mais dépend de l’appartenance à un groupe : j’aurais aimé tant qu’à faire qu’il s’agisse des groupes buddypress

    Voilà en gros où j’en suis. Si quelqu’un a une idée… même si pour cela il me fat changer s2members pour un autre plugin qui sache gérer accès rivé à des pages selon des groupes ET gestion d’abonnement gratuit et payant et accès limité selon le type d’abonnement… A moins qu’il « suffise » de modifier du code mais là je n’y connais pas grand chose encore.

    Merci d’avance

    #5941
    Photo du profil de Dan
    Dan
    Admin bbPress

    Le sujet est tout à fait à ta portée. Le code et la manière de l’utiliser suggéré par @imath est tout à fait valable je pense. Et « l’artillerie lourde » mentionnée est tout à fait justifié également.
    En regardant la liste des plugins utilisés, je pense même que tu es victime de tes lectures sur WordPress. Une bonne partie pourrait être désinstallés il me semble car ils ne te servent à rien (du moins pour le moment). Plus il y a de plugins, plus ton serveur va travailler et donc, ralentir.
    S2 member est très bien, mais l’utiliser juste pour protéger les profils dee tes membres (combien à cette heure), est excessif. Il y a moyen de faire plus simple à mon avis dans ton cas.

    #5942
    Photo du profil de E.
    E.
    Participant

    Bonjour Dan,

    S’il s’agit de sa réponse suggérant la méthode de restriction de pages ci-dessous :

    « Je crois qu’il y a 2 techniques : masquer le contenu d’une page ou d’un post (the_content) ou carrément restreindre l’accès à une page.

    Pour la première technique, j’avais enrichi un de mes plugins d’un shortcode [bc_restrict_gm] qui permet de réserver du texte/contenu à partir du moment où il est dans ce shortcode aux seuls membres du groupe spécifié dans son attribut group_id. D’ailleurs, je viens de m’apercevoir que j’ai des demandes de support en souffrance sur le WordPress repo pour ce plugin :(.

    Pour la deuxième technique, il s’agit d’utiliser un post meta que tu appelles ‘jjvv_group_restrict’ par exemple (champ personnalisé -> voir les options d’affichage si l’ui des champs perso n’est pas affichée dans l’éditeur) et dans lequel tu peux stocker un identifiant de groupe. Ensuite depuis le functions.php de ton thème actif, tu ajoutes simplement ce code :

    function jjvv_check_for_group_id() {
    global $post;
    $user_id = bp_loggedin_user_id();
    // si ce n’est pas une page de blog on affiche la page
    if( !bp_is_blog_page() )
    return;
    // le super admin a accés à tout !
    if( is_super_admin() )
    return;
    $group_id = get_post_meta( $post->ID, ‘jjvv_group_restrict’, true );
    // si le meta n’existe pas on affiche la page
    if( empty( $group_id ) )
    return;
    $group = groups_get_group( array( ‘group_id’ => $group_id ) );
    // si le group n’existe pas on affiche la page
    if( empty( $group ) )
    return;
    // on récupère le lien vers le groupe pour rediriger l’utilisateur si pas dans le groupe
    $redirect = bp_get_group_permalink( $group );
    // si on a pas d’utilisateur loggé, on redirige
    if( empty( $user_id ) ) {
    bp_core_add_message( __( ‘Yo t pas loggé, donc log toi et rejoins le groupe si tu veux accéder à ce contenu’ ), ‘error’ );
    bp_core_redirect( $redirect );
    }
    // si l’utilisateur n’est pas membre du group on redirige
    if( !groups_is_user_member( $user_id, $group_id ) ) {
    bp_core_add_message( __( ‘rejoins le groupe si tu veux accéder à ce contenu’ ), ‘error’ );
    bp_core_redirect( $redirect );
    }
    // autrement on fait rien… donc la page s’affiche !
    }
    add_action( ‘bp_screens’, ‘jjvv_check_for_group_id’ );

    J’imagine que tous les plugins que tu cites sont très intéressants, d’ailleurs il y en a d’autres pour gérer les accès des membres ( s2member, membership..). Toutefois, il me semble dans ton cas, que ça serait un peu utiliser l’artillerie lourde dans la mesure où tu bases la visibilité d’une page / d’un post selon l’appartenance à un groupe… »

    j’avoue n’y avoir rien compris. Utiliser un post-meta… je ne comprends pas pleinement comment cela fonctionne, du coup tout le reste me parait vague voire complètement incompréhensible. Et la méthode shortcode encore moins pour le coup.

    Quant à faire plus simple, sachant que la proposition d’abonnement viendrait rapidement dès ouverture du site de façon officielle, je ne sais pas et n’ai rien trouvé. Mais je suis preneuse de tout conseil. Car il est vrai que nous trouvons de tout et n’importe quoi et qu’il est difficile de tout trier.

    Merci d’avance en tout cas 🙂

    #5943
    Photo du profil de Dan
    Dan
    Admin bbPress

    Nous ne sommes plus sur du support BuddyPress là !
    Pour faire court, un post_meta est sans doute plus connu sous le terme générique de custom post type (CPT).
    Lorsque tu crées une page dont le contenu sera destiné aux membres d’un groupe, tu lui assignes un champ personnalisé (custom post type en anglais) ou post_meta.
    Post_meta réunit tous les éléments relatifs à un article ou à une page (l’auteur, date de publication, etc) que l’on voit habituellement à la suite d’un article.
    Selon le cas, il faut activer « champs personnalisés » depuis le menu « option de l’écran » situé en haut à droite lorsque tu te trouves sur la page d’ajout de nouvelle page dans l’admin WordPress.
    Pour le reste, c’est détaillé sur le codex WP-fr et pour l’emploi avec BP, tu suis la solution #2 donnée par Mathieu.

    Pour les abonnements à des contenus, il n’existe rien de spécifique à BP (qui ne gère pas de contenu), mais tu as par ex. JetPack ou Subscribe2. Mais tu peux aussi le faire toi-même, en plus rudimentaire certes, comme expliqué ici (en).
    Pour la petite histoire, il y a même une équipe WordPress dédiée: WP Post Meta Team ( Avec plein d’infos sur le sujet.

    Tu peux également tenter une recherche sur Google, ce ne sont pas les infos et les avis qui manquent sur le sujet (search « wordpress subscribe to a page »)

    #5946
    Photo du profil de E.
    E.
    Participant

    Merci d’avoir pris le temps de me répondre, et d’avoir un peu éclairci la solution d’imath. Même si quelques points me restent obscures, notamment dans le code proposé pour le fichier functions.php (puis-je mettre les id de groupe que je souhaite ? est-ce normal qu’aucune id de groupe ne soit indiqué dans le code functions.php ? retrouve-t-on ensuite facilement le code id de groupe attaché à un groupe buddypress ? j’ai cru comprendre qu’une id créée pour un post-meta se retrouvait effectivement facilement ensuite mais pas bien sûr d’avoir tout compris…). Au pire je pense que je trouverais le reste de ces questions par moi-même ou par wordpress si j’ai bien compris les séparations respectives de chacun…

    Et oui, effectivement, il ne s’agit pas totalement d’un support Buddypress, bien que ma question initiale était de « créer des pages dont l’accès serait restreint en fonction des groupes créés par buddypress ». Ma question initiale était donc de savoir s’il y avait, depuis le dernier topic support à ce sujet, eu des solutions propres à buddypress concernant cette question (plugin spécifique à buddypress, nombre d’entre eux se développant régulièrement mais n’étant pas toujours faciles à trouver, ou solutions par code récemment trouvées). Visiblement la réponse est non.

    Et oui peut-être que mes (nos) questions paraissent parfois embrouillées, stupides et déplacées ici (et considérées comme devant être posées sur le support wordpress) mais pour des néophytes, il est parfois bien difficile de faire la part de qui fait quoi et vers qui se diriger.

    Concernant la question des souscriptions, je crois avoir lu de tout (et du n’importe quoi peut-être), des plugins au codage alambiqué, et je dois dire avoir été quelque peu déçue de n’avoir rien trouvé de complet. Et déçue aussi de n’avoir pas trouvé une solution rattachée à buddypress puisque de plus en plus de réseaux sociaux proposent des abonnements, des solutions de souscriptions à diverses options. Il s’agirait là d’un développement buddypress intéressant peut-être. C’est en tout cas un point que j’aurais adoré savoir développer moi-même, mais je ne suis pas développeur (pas encore du moins ? on peut toujours rêvé).

    La solution Bp et s2members m’est apparue la plus adaptée à ce qui est visé sur ce site. Et pourtant j’ai effectivement été voir les solutions jetpack, ou autre plugin, tel que membership et compagnie. Ou les solutions proposées en codant. Mais tout ce que j’ai testé jusque là m’a paru soit excessivement compliqué, soit incompréhensible, soit faisant buguer le tout… et aucune surtout ne permet d’intégrer dans ses réglages les groupes de buddypress, ce qui est fort dommage.

    En tout cas merci pour toutes ces réponses, même si les réponses apportent soudain encore plus de questions 😛

    #5947
    Photo du profil de Dan
    Dan
    Admin bbPress

    Ce snippet agit sur la page, pas sur le groupe. Il n’y a donc rien à mettre dans ce code, mais dans le post_meta de la page.
    (il s’agit d’utiliser un post meta […] dans lequel tu peux stocker un identifiant de groupe. )
    puis-je mettre les id de groupe que je souhaite ?
    Évidemment !

    est-ce normal qu’aucune id de groupe ne soit indiqué dans le code functions.php ?
    Oui. Rappelles-toi que lors de la création de la page, tu indiques un post_meta. Celui-ci étant unique il ne peut y avoir de méprise. La magie opère avec cette instruction:$group_id = get_post_meta( $post->ID, ‘jjvv_group_restrict’, true );
    $group_id = n’importe quel groupe (on s’en fout de savoir lequel exactement dès lors qu’un groupe est créé, il a forcément un id !
    get_post_meta = va me récupérer une meta dans la base
    $post->ID, jjvv_group_restrict = Une meta numéro (ID) de type post qu’on va mettre en relation avec jjvv_group_restrict (le fameux snippet) dès que la page sera appelée.

    Retrouve-t-on ensuite facilement le code id de groupe attaché à un groupe buddypress ?
    Si tu connais le nom de tes pages c’est suffisant non ? Tableau de bord > Pages > Toutes les pages !
    Tes groupes sont également listés en admin. En survolant le bouton « modifier » tu verras l’url dans le bas du navigateur et le slug(chemin) avec le ID du groupe.
    Tu adaptes une page à un groupe et non l’inverse. C’est une page (un contenu) qui est réservée au groupe, et pas le groupe qui est réservé à une page. Tu auras beau allouer une meta sur une page, si aucun groupe portant le id indiqué dans la meta n’existe, et bien cette page s’affichera.

    #5948
    Photo du profil de E.
    E.
    Participant

    Que dire si ce n’est un grand, un immense merci !

    Après être allée sur les codex et tout et tout pour essayer de comprendre le code fourni, je galérais sur un « ; » qui manquait à mon code (un mauvais copier coller) et sur ce simple id de group que je ne trouvais pas. Toutes vos explications m’ont permis de mieux comprendre le code et de trouver ce fameux ID o/

    C’est juste magique et exactement ce dont j’avais besoin. Donc mille et un merci tous pour tous vos conseils, toutes vos explications et votre patience face à mes questions 🙂

7 sujets de 1 à 7 (sur un total de 7)
  • Le sujet ‘Accès à des pages restreint selon les groupes BP’ est fermé à de nouvelles réponses.
Aller à la barre d’outils