Snippet BuddyPress : comment n’afficher que les personnes du genre opposé dans la page des membres

Vous cherchez à bâtir un site de rencontres avec BuddyPress et WordPress ? A moins que ce ne soit un site où le concept repose sur une ouverture à tous les genres, vous allez forcément avoir besoin de personnaliser BuddyPress afin que les hommes ne puissent voir que les femmes, et vice-versa.

BuddyPress ne permet pas de filtrer par défaut les personnes par genre dans la recherche, et ne peut donc pas empêcher les personnes du même genre de se voir les uns les autres dans la page des membres.

De plus, il n’existe à ce jour pas d’extension WordPress qui permette cela. Fort heureusement, la personne à l’origine de l’excellent plugin BP Profile Search, qui permet aux utilisateurs de votre réseau social de faire des recherches de membres, a communiqué un bout de code très utile. Ce dernier n’affichera que les personnes du sexe opposé dans la page des membres, et empêchera les personnes du même sexe de se voir.

Pour l’utiliser, il vous faudra créer un fichier intitulé « bp-custom.php », que vous uploaderez dans le dossier /wp-content/plugins/ de votre installation WordPress.

Dans ce fichier bp-custom.php, voici le code qu’il faut mettre entre les 2 balises php (ne les oubliez pas !) :

[code]

add_filter (‘bp_ajax_querystring’, ‘modify_members_loop’, 20, 2);
function modify_members_loop ($qs=false, $object=false) {

if (is_user_logged_in() && !current_user_can(‘activate_plugins’) ){

global $wpdb;
if ($object != ‘members’) return $qs;

// figure out if the logged-in user is male or female
$gender = xprofile_get_field_data (2, bp_loggedin_user_id ());

if ($gender == ‘Male’)
$query = « SELECT user_id FROM {$wpdb->prefix}bp_xprofile_data WHERE field_id = 2 AND value = ‘Female' »;
else
$query = « SELECT user_id FROM {$wpdb->prefix}bp_xprofile_data WHERE field_id = 2 AND value = ‘Male' »;

$custom_ids = $wpdb->get_col ($query);

$args = wp_parse_args ($qs);
$args[‘include’] = implode (‘,’, $custom_ids);
$qs = build_query ($args);

return $qs;
}
}

[/code]

Attention, dans ce code, il vous faudra remplacer tous les « 2 » par l’ID correspondant au champ « genre » de votre configuration BuddyPress. Pour trouver l’ID, rendez-vous dans la liste des « profile fields », et regardez l’URL du champ « Gender », si c’est le champ « Gender » que vous souhaitez verrouiller.

Remplacez « Male » et « Female » par les valeurs exactes que vous utilisez dans le champ « Genre ».

Enfin, vous pourrez observer le résultat en vous logguant en tant que membre, car dans ce code, nous avons volontairement exclu l’admin afin qu’en tant qu’admin, vous puissiez voir tous les membres qui composent votre réseau social ou votre site de rencontres ! Pratique, n’est-ce pas ?

Une fois ce code mis en ligne, vous constaterez que seul(e)s les membres du sexe opposé s’afficheront dans la boucle des membres. Toutefois, ce code ne filtre pas les autres boucles affichant des membres (les widgets affichant les derniers membres, etc…).

Si vous avez apprécié mon tuto, n’hésitez pas à me faire signe sur Twitter et Facebook !

Une réponse

  1. Bonjour,

    C’est une fonction très pratique.

    Par contre cela créé un conflit avec le plugin « buddypress followers »

    Ce plugin permet aux membres de s’ajouter en favoris et lorsque qu’on utilise votre code, cela affiche tout les membres en favoris.

    Pensez-vous que cela peut être corrigé ?

    Je vous remercie par avance.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.