bp_get_member_profile_data( array|string $args = '' )
Get a piece of user profile data.
Description
When used in a bp_has_members() loop, this function will attempt to fetch profile data cached in the template global. It is also safe to use outside of the loop.
Parameters
- $args
-
(Optional) Array of config parameters.
- 'field'
(string) Name of the profile field. - 'user_id'
(int) ID of the user whose data is being fetched. Defaults to the current member in the loop, or if not present, to the currently displayed user.
Default value: ''
- 'field'
Return
(string|bool) Profile data if found, otherwise false.
Source
File: bp-members/bp-members-template.php
function bp_get_member_profile_data( $args = '' ) {
global $members_template;
if ( ! bp_is_active( 'xprofile' ) ) {
return false;
}
// Declare local variables.
$data = false;
// Guess at default $user_id.
$default_user_id = 0;
if ( ! empty( $members_template->member->id ) ) {
$default_user_id = $members_template->member->id;
} elseif ( bp_displayed_user_id() ) {
$default_user_id = bp_displayed_user_id();
}
$defaults = array(
'field' => false,
'user_id' => $default_user_id,
);
$r = wp_parse_args( $args, $defaults );
// If we're in a members loop, get the data from the global.
if ( ! empty( $members_template->member->profile_data ) ) {
$profile_data = $members_template->member->profile_data;
}
// Otherwise query for the data.
if ( empty( $profile_data ) && method_exists( 'BP_XProfile_ProfileData', 'get_all_for_user' ) ) {
$profile_data = BP_XProfile_ProfileData::get_all_for_user( $r['user_id'] );
}
// If we're in the members loop, but the profile data has not
// been loaded into the global, cache it there for later use.
if ( ! empty( $members_template->member ) && empty( $members_template->member->profile_data ) ) {
$members_template->member->profile_data = $profile_data;
}
// Get the data for the specific field requested.
if ( ! empty( $profile_data ) && ! empty( $profile_data[ $r['field'] ]['field_type'] ) && ! empty( $profile_data[ $r['field'] ]['field_data'] ) ) {
$data = xprofile_format_profile_field( $profile_data[ $r['field'] ]['field_type'], $profile_data[ $r['field'] ]['field_data'] );
}
/**
* Filters resulting piece of member profile data.
*
* @since BuddyPress 1.2.0
* @since BuddyPress 2.6.0 Added the `$r` parameter.
*
* @param string|bool $data Profile data if found, otherwise false.
* @param array $r Array of parsed arguments.
*/
$data = apply_filters( 'bp_get_member_profile_data', $data, $r );
/**
* Filters the resulting piece of member profile data by field type.
*
* This is a dynamic filter based on field type of the current field requested.
*
* @since BuddyPress 2.7.0
*
* @param string|bool $data Profile data if found, otherwise false.
* @param array $r Array of parsed arguments.
*/
if ( ! empty( $profile_data[ $r['field'] ]['field_type'] ) ) {
$data = apply_filters( 'bp_get_member_profile_data_' . $profile_data[ $r['field'] ]['field_type'], $data, $r );
}
return $data;
}
Changelog
| Version | Description |
|---|---|
| BuddyPress 1.2.0 | Introduced. |
Questions?
We're always happy to help with code or other questions you might have! Search our developer docs, contact support, or connect with our sales team.