Skip to content

Instantly share code, notes, and snippets.

@sbrajesh
Last active March 14, 2024 23:27
Show Gist options
  • Star 17 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
  • Save sbrajesh/2142009 to your computer and use it in GitHub Desktop.
Save sbrajesh/2142009 to your computer and use it in GitHub Desktop.
Hide Subscriber Users from BuddyPress member Directory
add_action('bp_ajax_querystring','bpdev_exclude_users',20,2);
function bpdev_exclude_users($qs=false,$object=false){
//list of users to exclude
if($object!='members')//hide for members only
return $qs;
$excluded_user=join(',',bpdev_get_subscriber_user_ids());//comma separated ids of users whom you want to exclude
$args=wp_parse_args($qs);
//check if we are searching for friends list etc?, do not exclude in this case
if(!empty($args['user_id']))
return $qs;
if(!empty($args['exclude']))
$args['exclude']=$args['exclude'].','.$excluded_user;
else
$args['exclude']=$excluded_user;
$qs=build_query($args);
return $qs;
}
function bpdev_get_subscriber_user_ids(){
$subscribers= get_users( array( 'role' => 'subscriber', 'fields' => 'ID' ) );
return $users;
}
@bryansayler
Copy link

Has anyone made this work by hiding users based on Paid Memberships Pro level?

Ex: hide users with membership level 1,2,3 from BuddyPress Member Directory

@Hastibe
Copy link

Hastibe commented Aug 26, 2020

Would anyone be able to help me with modifying this code so that all user roles are hidden, except for users with a specified user role?

@scottlee
Copy link

Super late reply, but for @Hastibe and anyone else who wants to exclude all but one role, change the exclude to include.

// Helper for fetching all IDs to include. Returns an array in this example.
$included_user_ids = my_function_to_fetch_all_users_by_role();

$args = wp_parse_args( $qs );
$args['include'] = implode( ',', $included_user_ids );

$qs = build_query( $args );

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment