Afficher le formulaire du module profile2 directement sur le formulaire du compte utilisateur

Pour afficher le formulaire du module profile2 directement sur le formulaire du compte utilisateur :

Nous assumerons ici que le type de profil est nommé "profile".

Premièrement, il faut cacher l'onglet sur la page du compte utilisateur :

/**
* Implements hook_menu_alter().
*/
function MY_MODULE_menu_alter(&$items) {
$items['user/%user_category/edit/profile']['access callback'] = FALSE;
}

Ensuite, il faut fusionner les 2 formulaires :

/**
* Implements hook_form_FORM_ID_alter() for the user edit form.
*/
function MY_MODULE_form_user_profile_form_alter(&$form, &$form_state) {
if (($type = profile2_get_types('profile')) && $type->userCategory) {
if (empty($form_state['profiles'])) {
$profile = profile2_load_by_user($form['#user'], 'profile');
if (empty($profile)) {
$profile = profile_create(array('type' => 'profile', 'uid' => $form['#user']->uid));
}
$form_state['profiles'][$profile->type] = $profile;
}
profile2_attach_form($form, $form_state);
}
}