@csimpson,
oh crossposting ! haven’t seen henry’s answer.
nobody visibility doesn’t exist. This setting is called “only me“. This means that only the member can see this field – and the site admins. Such fields are not for site admins, but for the members !
I don’t really understand what is not working for you, as what you’re looking for doesn’t exist in BuddyPress. Sorry if i’m misunderstanding you.
When you create such a field visibility, you should also set “Enforce the default visibility for all members“, so the member cannot modify it later on his profile settings.
Little weird side effect, when a “only me” field is used and member A wrote hello, this word becames clickabke, by default. When member B write also hello, it becames also clickable. And if A or B clcik on Hello, it shows a list of all members who wrote the same word. In this case A and B !
Not really confidential, isn’t it ? The solution is to remove the clickable link.
Here’s a snippet which let you do that selectively.
function my_xprofile_filter_link_profile_data( $field_value, $field_type = 'textbox' ) {
// Access the field you are going to display value.
global $field;
// In this array you write the ids of the fields you want to hide the link.
$excluded_field_ids = array(2,9,54); // field ID separated by comma
// If the id of this $field is in the array, we return the value only and not the link.
if (in_array($field->id, $excluded_field_ids))
return $field_value;
if ( 'datebox' == $field_type )
return $field_value;
if ( !strpos( $field_value, ',' ) && ( count( explode( ' ', $field_value ) ) > 5 ) )
return $field_value;
$values = explode( ',', $field_value );
if ( !empty( $values ) ) {
foreach ( (array) $values as $value ) {
$value = trim( $value );
// If the value is a URL, skip it and just make it clickable.
if ( preg_match( '@(https?://([-\w\.]+)+(:\d+)?(/([\w/_\.]*(\?\S+)?)?)?)@', $value ) ) {
$new_values[] = make_clickable( $value );
// Is not clickable
} else {
// More than 5 spaces
if ( count( explode( ' ', $value ) ) > 5 ) {
$new_values[] = $value;
// Less than 5 spaces
} else {
$search_url = add_query_arg( array( 's' => urlencode( $value ) ), bp_get_members_directory_permalink() );
$new_values[] = '<a href="' . $search_url . '" rel="nofollow">' . $value . '</a>';
}
}
}
$values = implode( ', ', $new_values );
}
return $values;
}
/**
* We remove the buddypress filter and add our custom filter.
*/
function remove_xprofile_links() {
// Remove the old filter.
remove_filter( 'bp_get_the_profile_field_value', 'xprofile_filter_link_profile_data', 9, 2 );
// Add your custom filter.
add_filter( 'bp_get_the_profile_field_value', 'my_xprofile_filter_link_profile_data', 9, 2);
}
add_action('bp_setup_globals', 'remove_xprofile_links');