Wie füge ich der Benutzerprofilseite benutzerdefinierte Formularfelder hinzu?

29

Die Benutzerprofilseite enthält die folgenden Felder:

Benutzername
Vorname
Nachname
Spitzname Anzeigename Kontaktinfo E-Mail Website AIM Yahoo IM
Jabber / Google Talk

Wie können weitere Felder zu diesem Abschnitt hinzugefügt werden? Feld wie Telefonnummer, Adresse oder sonstiges.

rsman
quelle

Antworten:

37

Sie müssen die verwenden 'show_user_profile', 'edit_user_profile', 'personal_options_update'und 'edit_user_profile_update'Haken.

Hier ist ein Code zum Hinzufügen einer Telefonnummer :

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;
}

Dieser Code fügt Ihrem Benutzerbildschirm ein Feld hinzu, das ungefähr so ​​aussieht:

Es gibt auch mehrere Blog-Beiträge zu diesem Thema, die hilfreich sein könnten:

Oder wenn Sie es vorziehen, nicht selbst zu rollen, gibt es Plugins, die diese Funktionen wie die folgenden hinzufügen (obwohl ich mir sicher bin, dass es andere gibt):

MikeSchinkel
quelle
Mike, ich hatte einige Probleme damit, meine Änderungen zu speichern. Ich habe es endlich geschafft, als ich ein vollständiges "Suchen und Ersetzen" durchgeführt habe. Müssen die Felder "Name" und "Titel" für meine zukünftige Referenz genau übereinstimmen?
Jonathan Wold
@Jonathan Wold - " Sind die Felder" Name "und" Titel "erforderlich, um eine genaue Übereinstimmung zu erzielen ?" Sie haben mir nicht genug Kontext gegeben, um zu wissen, wie ich antworten soll. Und vielleicht möchten Sie eine komplett neue Frage erstellen .
MikeSchinkel
1
@MikeSchinkel Cimy User Extra Fields ist imo keine gute Empfehlung. Der Support ist nicht wirklich da und der Code ist ... 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);

Hoffe das hilft.

Quelle: WPBeginner

Jannis
quelle