Skip to:
Content
Pages
Categories
Search
Top
Bottom

Add a variable in bp_has_members

  • Avatar of Jordi Radstake
    Jordi Radstake
    Participant

    @jordi-radstake

    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.

Viewing 11 replies - 1 through 11 (of 11 total)
  • Avatar of Jordi Radstake
    Jordi Radstake
    Participant

    @jordi-radstake

    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.)

    Avatar of Henry
    Henry
    Participant

    @henrywright-1

    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_login or $the_user_id it should be safe to remove them.

    Avatar of Jordi Radstake
    Jordi Radstake
    Participant

    @jordi-radstake

    Ok, thnx for mentioning that :)

    Avatar of Henry
    Henry
    Participant

    @henrywright-1

    bp_loggedin_user_id() will hold the exact same value as $the_user_id anyway.

    Avatar of Jordi Radstake
    Jordi Radstake
    Participant

    @jordi-radstake

    Now I would have the same for group-members, but that seems not to work?

    Avatar of Henry
    Henry
    Participant

    @henrywright-1

    For the groups loop, you need to use bp_group_has_members() instead of bp_has_members()

    Avatar of Jordi Radstake
    Jordi Radstake
    Participant

    @jordi-radstake

    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>
    Avatar of Jordi Radstake
    Jordi Radstake
    Participant

    @jordi-radstake

    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;
    }
    
    Avatar of Jordi Radstake
    Jordi Radstake
    Participant

    @jordi-radstake

    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;
    }
    Avatar of Henry
    Henry
    Participant

    @henrywright-1

    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.

    Avatar of Jordi Radstake
    Jordi Radstake
    Participant

    @jordi-radstake

    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') )) : ?>

Viewing 11 replies - 1 through 11 (of 11 total)

You must be logged in to reply to this topic.