Comment ajouter des champs de formulaire personnalisés à la page de profil utilisateur?


29

La page de profil utilisateur comporte les champs suivants:

Nom d'utilisateur
Prénom
Nom de famille
Pseudo Nom complet Coordonnées E-mail Site Web AIM Yahoo IM
Jabber / Google Talk

Comment ajouter plus de champs à cette section. Champ tel que le numéro de téléphone, l'adresse ou toute autre chose.

Réponses:


37

Vous devez utiliser les 'show_user_profile', 'edit_user_profile', 'personal_options_update'et 'edit_user_profile_update'crochets.

Voici un code pour ajouter un numéro de téléphone :

add_action( 'show_user_profile', 'yoursite_extra_user_profile_fields' );
add_action( 'edit_user_profile', 'yoursite_extra_user_profile_fields' );
function yoursite_extra_user_profile_fields( $user ) {
?>
  <h3><?php _e("Extra profile information", "blank"); ?></h3>
  <table class="form-table">
    <tr>
      <th><label for="phone"><?php _e("Phone"); ?></label></th>
      <td>
        <input type="text" name="phone" id="phone" class="regular-text" 
            value="<?php echo esc_attr( get_the_author_meta( 'phone', $user->ID ) ); ?>" /><br />
        <span class="description"><?php _e("Please enter your phone."); ?></span>
    </td>
    </tr>
  </table>
<?php
}

add_action( 'personal_options_update', 'yoursite_save_extra_user_profile_fields' );
add_action( 'edit_user_profile_update', 'yoursite_save_extra_user_profile_fields' );
function yoursite_save_extra_user_profile_fields( $user_id ) {
  $saved = false;
  if ( current_user_can( 'edit_user', $user_id ) ) {
    update_user_meta( $user_id, 'phone', $_POST['phone'] );
    $saved = true;
  }
  return true;
}

Ce code ajoutera un champ à votre écran utilisateur qui ressemble à ceci:

Il existe également plusieurs articles de blog disponibles sur le sujet qui pourraient être utiles:

Ou si vous préférez ne pas rouler vous-même, il existe des plugins qui ajoutent lesdites fonctionnalités telles que les suivantes (bien que je suis sûr qu'il y en a d'autres):


Mike, j'ai rencontré beaucoup de problèmes pour enregistrer mes modifications. Je l'ai finalement cloué quand j'ai fait une recherche et un remplacement complets. Pour ma future référence, les champs "nom" et "titre" doivent-ils correspondre exactement?
Jonathan Wold

@Jonathan Wold - "les champs" nom "et" titre "doivent-ils correspondre exactement?" Vous ne m'avez pas donné suffisamment de contexte pour que je sache comment répondre. Et vous voudrez peut-être créer une nouvelle question complète .
MikeSchinkel

1
@MikeSchinkel Cimy User Extra Fields n'est imo aucune bonne recommandation. Le support n'est pas vraiment là et le code est ... hm.
kaiser

8
// remove aim, jabber, yim 
function hide_profile_fields( $contactmethods ) {
    unset($contactmethods['aim']);
    unset($contactmethods['jabber']);
    unset($contactmethods['yim']);
    return $contactmethods;
}

// add anything else
function my_new_contactmethods( $contactmethods ) {
    //add Birthday
    $contactmethods['birthday'] = 'Birthday';
    //add Address
    $contactmethods['address'] = 'Address';
    //add City
    $contactmethods['city'] = 'City';
    //add State
    $contactmethods['state'] = 'State';
    //add Postcode
    $contactmethods['postcode'] = 'Postcode';
    //add Phone
    $contactmethods['phone'] = 'Phone';
    //add Mobilphone
    $contactmethods['mphone'] = 'Mobilphone';

    return $contactmethods;
}
add_filter('user_contactmethods','my_new_contactmethods',10,1);
add_filter('user_contactmethods','hide_profile_fields',10,1);

J'espère que cela t'aides.

Source: WPBeginner

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.