Add a variable in bp_has_members
-
I have this code in the members loop:
<?php if (bp_has_members( array( 'include' => include_by_meta('Woman', 'Gender'), 'type' => 'newest') )) : ?>What I want to do is to replace ‘Woman’ by the xprofile value of the current logged in user.
Must be easy, but I can’t figrured it out.
-
Never mind, fixed it.
<?php global $bp; $the_user_id = $bp->loggedin_user->userdata->ID; $the_user_login = $bp->loggedin_user->userdata->user_login; $geslacht = bp_get_profile_field_data('field=Geslacht&user_id='.bp_loggedin_user_id()); ?> <?php if (bp_has_members( array( 'include' => include_by_meta($geslacht, 'Geslacht'), 'type' => 'newest') )) : ?>(geslacht is dutch for gender btw.)
I noticed in your code these lines aren’t being used:
global $bp; $the_user_id = $bp->loggedin_user->userdata->ID; $the_user_login = $bp->loggedin_user->userdata->user_login;Unless you’re using
$the_user_loginor$the_user_idit should be safe to remove them.Ok, thnx for mentioning that 🙂
bp_loggedin_user_id()will hold the exact same value as$the_user_idanyway.Now I would have the same for group-members, but that seems not to work?
For the groups loop, you need to use
bp_group_has_members()instead ofbp_has_members()I did, but that’s not working.
<?php $geslacht = bp_get_profile_field_data('field=Geslacht&user_id='.bp_loggedin_user_id()); ?> <?php //if ( bp_group_has_members( 'exclude_admins_mods=0' ) ) : ?> <?php if (bp_group_has_members( array( 'include' => include_by_meta($geslacht, 'Geslacht'), 'type' => 'newest') )) : ?> <?php do_action( 'bp_before_group_members_content' ); ?> <div class="item-list-tabs" id="subnav" role="navigation"> <ul>Oh wait, it has to do with the function:
function include_by_meta($theMetaValue, $theMetaField) { $memberArray = array(); if (bp_has_members()) : while (bp_members()) : bp_the_member(); $theFieldValue = bp_get_member_profile_data( 'field='. $theMetaField ); if ($theFieldValue==$theMetaValue) { array_push($memberArray, bp_get_member_user_id()); } endwhile; endif; $theIncludeString=implode(",",$memberArray); return $theIncludeString; }Why can’t I just copy that function?
function include_by_meta_group($theMetaValue, $theMetaField) { $memberArray = array(); if (bp_group_has_members()) : while (bp_group_members()) : bp_group_the_member(); $theFieldValue = bp_get_member_profile_data( 'field='. $theMetaField ); if ($theFieldValue==$theMetaValue) { array_push($memberArray, bp_get_member_user_id()); } endwhile; endif; $theIncludeString=implode(",",$memberArray); return $theIncludeString; }I’m not very familiar with the groups loop (never had groups enabled) but, yes, in theory there is nothing to stop copying functions you need from the BP core, modifying them for your purpose then adding them to your theme’s functions.php file for your own custom use.
Other question, is it possible to add multiple includes to this?
<?php if (bp_group_has_members( array( 'include' => include_by_meta($geslacht, 'Geslacht'), 'type' => 'newest') )) : ?>
- The topic ‘Add a variable in bp_has_members’ is closed to new replies.