Ultimate member – Ajouter l’édition des champs personnalisés à la page compte

  • WordPress

Si vous utilisez Ultimate Member il peut être interessant de proposer à vos utilisateur de modifier les champs personnalisés directement depuis la page de compte.

Dans un premier temps vous devez ajouter définir un nouvel onglet et le rendre hookable. Ouvrez votre fichier function.php et ajoutez le contenu suivant : 

 /* create new tab */
 add_filter('um_account_page_default_tabs_hook', 'MyCustomTab', 100 );
 function MyCustomTab( $tabs ) {
 $tabs[800]['MyCustomTab']['icon'] = 'um-faicon-pencil-square-o'; 
 $tabs[800]['MyCustomTab']['title'] = 'Champs personnalisés'; 
 $tabs[800]['MyCustomTab']['submit_title'] = 'Envoyer'; 
 $tabs[800]['MyCustomTab']['custom'] = true;
 return $tabs;
}

/* make our new tab hookable */
add_action('um_account_tab__MyCustomTab', 'um_account_tab__MyCustomTab');
 function um_account_tab__MyCustomTab( $info ) {
 global $ultimatemember;
 extract( $info );
 $output = $ultimatemember->account->get_tab_output('MyCustomTab');
 if ( $output ) { echo $output; }
}

Ensuite il est nécessaire d’ajouter la fonction qui gère le contenu affiché dans notre onglet. Ici vous devrez remplacer CUSTOMMETA1 et CUSTOMMETA2 par la meta_key de vos champs.

/* Finally we add some content in the tab */
add_filter('um_account_content_hook_MyCustomTab', 'um_account_content_hook_MyCustomTab');
function um_account_content_hook_MyCustomTab( $output ){
 ob_start();

 $id = um_user('ID');
 $output = '<div class="um-field">';
 $names = array('CUSTOMMETA1','CUSTOMMETA2');  // ADD THE META-KEYS HERE

 $fields = array(); 
 foreach( $names as $name ){
   $fields[ $name ] = UM()->builtin()->get_specific_field( $name );
 }
 $fields = apply_filters('um_account_secure_fields', $fields, $id);
 foreach( $fields as $key => $data ){
   $output .= UM()->fields()->edit_field( $key, $data );
 }

 $output .= '</div>';

 $output .= ob_get_contents();
 ob_end_clean();
 return $output;
}

Dans un dernier temps, nous devons ajouter la fonction qui enregistrera les donnée à l’envoi du formulaire.

/* ensure that the custom fields are updated when the account is updated */
add_action('um_account_pre_update_profile', 'getUMFormData', 100);

function getUMFormData(){
 $id = um_user('ID');
 $names = array('CUSTOMMETA1','CUSTOMMETA2');  // ADD THE META-KEYS HERE

 foreach( $names as $name )
   update_user_meta( $id, $name, $_POST[$name] );
}

Source : https://gist.github.com/champsupertramp/c1f6d83406e9e0425e9e98aaa36fed7d

S’abonner
Notifier de
guest
0 Commentaires
Inline Feedbacks
View all comments