- Statut : non résolu
- Ce sujet contient 14 réponses, 2 participants et a été mis à jour pour la dernière fois par
HDCms, le il y a 8 années et 11 mois.
-
AuteurMessages
-
18 mai 2016 à 16 h 21 min #563164
Bonjour,
Ma configuration WP actuelle
– Version de WordPress : 4.5.2
– Version de PHP/MySQL : 5.5
– Thème utilisé : sweetdate
– Extensions en place : buddypress,paidmemberpro …
– Nom de l’hebergeur : localhost
– Adresse du site : en testProblème(s) rencontré(s) :
Pour moi le problème vient de :
if (in_array(bp_current_group_id(), $group_ids))
pourtant je récupère bien la valeur de l’id du groupe de buddupress et un tableau des valeurs des groupes dont fait partie le membre connecté
Merci pour votre aideadd_action(‘get_header’,’redirect_groupe_page’);
function redirect_groupe_page() { // 11/11/2015 – HD
if (bp_is_group_home()) { // si page d’un groupe
$user_id = get_current_user_id(); // Identifiant du membre connecté
$NbrGrMembreId =bp_get_total_group_count_for_user($user_id); // Nbr de groupe du connecté
//echo « NbrGrMembreId » .$NbrGrMembreId;
//global $bp;
echo « bp_current_group_id() ». bp_current_group_id(); // a l’air de retourner le bon id
$group_ids = groups_get_user_groups( bp_loggedin_user_id() ); // groupes dont fait partie le membre connecté
//print_r($group_ids); // c’est bien un array ?
if (in_array(bp_current_group_id(), $group_ids)) { // Si l’id du groupe affiché fait partie d’un groupe ou adhére le membre
//echo « FAIT PARTIE GROUPE »;
exit();
}
elseif ( …);
exit(); }
} // fin test si page d’un groupe18 mai 2016 à 20 h 02 min #1055784Bonjour,
un peux plus d’info sur ce que provoque votre « problème » serais apprecié, je suppose que sois :
– vous avez un erreur 500
– la fonction ne se lance pas?
merci.
18 mai 2016 à 21 h 06 min #1055785Bonsoir,
désolé
Pas d’erreur 500
la fonction ne fonctionne pas
Il passe automatique au elseif alors qu’il devrait passer dans le if puisque les conditions sont théoriquement requises. Ex:
bp_current_group_id()=2
$group_ids contient 1 & 2
d’ou ma question sur petite type ou si je me trompe pas sur le fonctionnement de « in_array »
n’étant pas un pro de php18 mai 2016 à 21 h 25 min #1055786Bonjour, effectivement in_array sert bien a vérifier si la valeur est presente en tant que valeur dans un array, exemple:
$ids = array(« un », « deux », « trois »);
if(in_array(« un », $ids)){
echo « bien présent! »;
}else{
echo « pas présent »;
}retournera bien « Bien présent! »
parcontre :$ids = array(« un » => « ok », « deux » => « ok », « trois » => « ok »);
if(in_array(« un », $ids)){
echo « bien présent! »;
}else{
echo « pas présent »;
}retournera pas présent, car in_array compare les valeures d’un array, et pas ses clefs.
pour voir etre sur, ajoutez cette ligne apres :
……..
$group_ids = groups_get_user_groups( bp_loggedin_user_id() ); // groupes dont fait partie le membre connecté
echo « <pre>";
print_r($group_ids);
echo "</pre>« ;et vérifiez que cela vous renvoi bien un array dont les VALEURES sont des ids.
19 mai 2016 à 7 h 58 min #1055788Bonjour
Oui tu as raisonbp_current_group_id()=2
$group_ids= Array
(
[groups] => Array
(
[0] => 1
[1] => 2
)
[total] => 2
)alors comment comparer la valeur ?
20 mai 2016 à 7 h 22 min #1055787Bonjour,
Une idée pour faire cette comparaison avec ces variables !
Merci20 mai 2016 à 16 h 39 min #1055789Bonjour,
A la place du in_array() tu peux utiliser :if(isset($group_ids[« groups »]) && in_array(bp_current_group_id(), $group_ids[« groups »])){
…
}20 mai 2016 à 16 h 55 min #1055790Bonjour,
malheureusement cela ne fonctionne pas.
J’avai testé aussi un comparatif sur les clefs mais je passe systematiquement au 2ème test elseifif (array_key_exists(bp_current_group_id(), $group_ids[« groups »])) { // Si l’id du groupe affiché fait partie d’un groupe ou adhére le membre
echo « FAIT PARTIE GROUPE »;
// exit();
}
/* elseif SI je l’active cela reste dans ce test20 mai 2016 à 17 h 52 min #1055791HDCms wrote:Bonjour,
malheureusement cela ne fonctionne pas.
J’avai testé aussi un comparatif sur les clefs mais je passe systematiquement au 2ème test elseifif (array_key_exists(bp_current_group_id(), $group_ids[« groups »])) { // Si l’id du groupe affiché fait partie d’un groupe ou adhére le membre
echo « FAIT PARTIE GROUPE »;
// exit();
}
/* elseif SI je l’active cela reste dans ce testC’est normal que ca ne marche pas avec ce code, et tant mieux car il serais faux.
Parcontre je ne comprend pas pourquoi celui que je t’ai fourni ne marche pas, vérifi bien le nom des variables et des fonctions, car il devrais marcher, obligatoirement.
Au besoin envoi moi tes identifiants FTP et fait moi un accès admin dans wordpress que je puisse tester ca en live.
20 mai 2016 à 18 h 06 min #1055792Re
ok super je t’envoi cela dès que je retrouvé les codes
par mail ou mp ?
si je remplace bp_current_group_id() par sa valeur, le test passe bien20 mai 2016 à 21 h 09 min #1055794Bon,
mauvaise nouvelle, ayant l’habitude de bosser par FTP, mettre un wp_die quand on passe par l’editeur BO n’est pas une bonne idée…
la bonne nouvelle c’est que je sais pourquoi ca ne marche pas
20 mai 2016 à 21 h 54 min #1055795Donc voila le script marche, enfin pour l’instant à part écrire un message en haut de page ca ne fait pas grand chose 😉
<?php
add_action( 'init', 'redirect_groupe_page' );
/**
* redirect_groupe_page()
* Check if user is member of the currently watched group page
* @author Ronan Pozzi
* @version 1.0
*/
function redirect_groupe_page() {
if ( is_admin() || ! function_exists( ‘bp_is_group_home’ ) || ! bp_is_group_home() ) {
return;
}
/** @var int $user_id The current user id */
$user_id = get_current_user_id();
/** @var int $group_id The current group id(the one we currently watch)*/
$group_id = bp_get_current_group_id();
if ( groups_is_user_member( $user_id, $group_id ) ) {
// If current user is a member of the current group, than…
echo ‘<div class="alert alert-info">Vous faites partit de ce groupe</div>‘;
}
}Alors les problemes qu’il y avais :
– le add_action(‘get_header’…), ne sachant pas ce que doit faire ce script, je l’ai mis sur un init plutot, mais il faudra penser cibler comme il faut le bon hook.(https://codex.wordpress.org/Plugin_API/Action_Reference/init)
– Beaucoups de variables pour pas grand chose, wordpress et buddypress possede deja des fonctions pour faire ce que tu souhaitait, ca ne sert a rien de réinventer la roue 😉21 mai 2016 à 8 h 47 min #1055793Bonjour,
SUPER 🙂 cela fonctionne
C’est effectivement assez différent de ce que j’avai fait et cherché pendant des heures !!
Enfin en le mettant dans bp-custom il a fallut quand même que je rebascule avec add_action(‘get_header’…)
J’ai pas vu tellement de variables éliminées même si effectivement pas mal de test
L’idée générale du script que je dois affiné, c’est de limiter l’adhésion à des groupes via paidmemberpro, mais je buttai sur le besoin d’afficher quand même le groupe BP si le membre en faisait déjà parti
Encore merci
@+21 mai 2016 à 11 h 51 min #1055796Je ne suis toujours pas convaincu de mettre cela en get_header, ce hook est prévu pour filtrer les scripts du head et pas vraiment pour faire du fonctionnel.
Je pense plutôt que le problème vient de la façon dont vous chargez votre fichier bp-custom.23 mai 2016 à 12 h 37 min #1055797Bonjour,
J’entends bien mais je viens de retester avec init mais cela ne fonctionne pas
Et je ne comprends pas plus !! -
AuteurMessages
- Vous devez être connecté pour répondre à ce sujet.