Use wp_redirect() and admin_url() to redirect the user to his profile page if the custom buddypress user meta data isn’t completely filled.
From another answer, I’ve seen that there’s the following function: bp_get_profile_field_data(). So you can easily build a template tag, that gives you either the full buddy user meta data set, or simply a FALSE back.
If you get a FALSE back, then you can redirect the user. On the get_user_metadata-hook, you already got the global $current_user set, so you can do the redirect on the template_redirect-hook.
function wpse57054_is_buddy_complete( $buddy_user_fields = array() )
{
// convert single field keys to arrays
$buddy_user_fields = (array) $buddy_user_fields;
foreach ( $buddy_user_fields as $buddy_user_meta )
{
$data = bp_get_profile_field_data( array(
'field' => $buddy_user_meta,
'user_id' => wp_get_current_user()->id,
) );
// One field empty/not filled: Abort and return FALSE
if ( empty( $data ) )
return false;
}
// Return the whole data set
return $data;
}