So it was a long process but I solved it. It required modding the files (first copying them to my theme)
The files are:
/wp-content/plugins/achievements/templates/achievements/loop-single-progress.php : add the following at the end of the opening php statement:
if ( !current_user_can('manage_options') )
return;
This will hide the list of “Unlocked By” when you click on an achievement, unless you are an admin.
/wp-content/plugins/achievements/templates/achievements/loop-progresses.php : add the same thing as above under do_action( 'dpa_template_before_progress_loop_block' );
This will hide the actual h1 heading “Unlocked By” above the list in the previous file.
/wp-content/plugins/achievements/templates/achievements/content-author-achievements : add the following at the end of the opening php statement
if ( bp_loggedin_user_id() != bp_displayed_user_id() )
wp_redirect( home_url( '404' ) );
This will redirect a user to your theme’s 404 page (if you have one) if they try to manually type out a url by putting /achievements/ at the end of someone else’s profile.
Finally add the following to /wp-content/plugins/bp-custom.php:
function hide_achievements_from_users() {
if ( bp_is_my_profile() || current_user_can('manage_options') ) {
return;
}
bp_core_remove_nav_item('achievements');
}
add_action( 'bp_setup_nav', 'hide_achievements_from_users', 99 );
This will hide the achievements tab from users’ buddypress profiles unless they are viewing their own profile, or are an admin.