How to Add Profile Privacy to BuddyPress

How to Add Profile Privacy to BuddyPress

Privacy controls are critical to any successful social network. Right now there are roughly zero plugin options for adding privacy to BuddyPress 1.5+. Some basic privacy controls are in discussion for future versions of BuddyPress, but there aren’t any usable options yet. Here’s a trick that may tide you over in the meantime.

Restrict User Profiles Based on Friendship

This is a hack that I drudged up from the BuddyPress forums, a solution originally proposed by our very own Richie_KS. It basically checks to see if users are friends before displaying a profile. Here’s how to use it:

1. Add this to your theme’s functions.php file:

// ------- Check if member is a friend  ------------- //

function bp_displayed_user_is_friend() {
global $bp;
if ( bp_is_profile_component() || bp_is_member() ) {
if ( ('is_friend' != BP_Friends_Friendship::check_is_friend( $bp->loggedin_user->id, $bp->displayed_user->id )) && (bp_loggedin_user_id() != bp_displayed_user_id()) )
if ( !is_super_admin( bp_loggedin_user_id() ) )

return true;
}
}

2. Create a non-friend template file:

FREE EBOOK
Your step-by-step roadmap to a profitable web dev business. From landing more clients to scaling like crazy.

By downloading this ebook I consent to occasionally receive emails from WPMU DEV.
We keep your email 100% private and do not spam.

FREE EBOOK
Plan, build, and launch your next WP site without a hitch. Our checklist makes the process easy and repeatable.

By downloading this ebook I consent to occasionally receive emails from WPMU DEV.
We keep your email 100% private and do not spam.

Essentially that will look something like this, with your own edits, of course:

{code type=php}

You must be friends in order to access users’ profiles.

Name it “not-friend.php” and it in your BuddyPress theme folder at: /members/single/

3. Edit your theme file to include the friendship check:
To restrict profile info, open up /members/single/profile.php and add this at the top of the page:

{code type=php}
<?php if ( bp_displayed_user_is_friend() ) : ?>

<?php locate_template( array( ‘members/single/not-friend.php’ ), true ) ?>

<?php else : ?>

Then you’ll need to add this at the bottom of the page:

{code type=php}<?php endif; ?>

Here’s what it will look like with the code in place:

The downside of this is that it doesn’t allow users to set their own privacy levels. However, I do like that it is a simple solution that can be implemented on the theme-level, without having to save anything new to the database. It’s by no means a full privacy solution, but I hope this tutorial helps those of you in a pinch who need some basic profile privacy in place.

Tags: