Wie füge ich dem Benutzerprofil ein Feld hinzu? Zum Beispiel Land, Alter usw

21

Ich bin nicht sehr gut mit Computern / Codes usw. Ich verwende ein Plugin, das ein Registrierungsformular zu etwas macht, und in dieser Form habe ich Land, Altersgruppe, Geschlecht und so weiter hinzugefügt. Ich klicke auf die Option, die den Registrierer zum WordPress-User-Ding hinzufügt. Aber wenn ich es versuche, werden nur der Benutzername und die E-Mail-Adresse im Abschnitt "Benutzer" des Backends angezeigt. Gibt es eine Möglichkeit, die anderen Felder im Abschnitt "Benutzer" anzuzeigen?

Ich brauche sie für statistische Zwecke zu zeigen.

Chloe Aus
quelle
5
Bitte versuchen Sie unsere Suche. Sie finden Dutzende von Beispielen.
Fuxia

Antworten:

57

Sie müssen die verwenden show_user_profile, edit_user_profile, personal_options_update, und edit_user_profile_updateHaken.

Sie können den folgenden Code verwenden, um zusätzliche Felder im Abschnitt Benutzer hinzuzufügen

Code zum Hinzufügen zusätzlicher Felder im Abschnitt "Benutzer bearbeiten":

add_action( 'show_user_profile', 'extra_user_profile_fields' );
add_action( 'edit_user_profile', 'extra_user_profile_fields' );

function extra_user_profile_fields( $user ) { ?>
    <h3><?php _e("Extra profile information", "blank"); ?></h3>

    <table class="form-table">
    <tr>
        <th><label for="address"><?php _e("Address"); ?></label></th>
        <td>
            <input type="text" name="address" id="address" value="<?php echo esc_attr( get_the_author_meta( 'address', $user->ID ) ); ?>" class="regular-text" /><br />
            <span class="description"><?php _e("Please enter your address."); ?></span>
        </td>
    </tr>
    <tr>
        <th><label for="city"><?php _e("City"); ?></label></th>
        <td>
            <input type="text" name="city" id="city" value="<?php echo esc_attr( get_the_author_meta( 'city', $user->ID ) ); ?>" class="regular-text" /><br />
            <span class="description"><?php _e("Please enter your city."); ?></span>
        </td>
    </tr>
    <tr>
    <th><label for="postalcode"><?php _e("Postal Code"); ?></label></th>
        <td>
            <input type="text" name="postalcode" id="postalcode" value="<?php echo esc_attr( get_the_author_meta( 'postalcode', $user->ID ) ); ?>" class="regular-text" /><br />
            <span class="description"><?php _e("Please enter your postal code."); ?></span>
        </td>
    </tr>
    </table>
<?php }

Code zum Speichern zusätzlicher Felddetails in der Datenbank :

add_action( 'personal_options_update', 'save_extra_user_profile_fields' );
add_action( 'edit_user_profile_update', 'save_extra_user_profile_fields' );

function save_extra_user_profile_fields( $user_id ) {
    if ( !current_user_can( 'edit_user', $user_id ) ) { 
        return false; 
    }
    update_user_meta( $user_id, 'address', $_POST['address'] );
    update_user_meta( $user_id, 'city', $_POST['city'] );
    update_user_meta( $user_id, 'postalcode', $_POST['postalcode'] );
}

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

Arpita Hunka
quelle
Bravo das klappt super.
AVEbrahimi
1
Hiermit werden keine Daten aus meinen zusätzlichen Feldern in der Datenbank gespeichert. Vorschläge bitte? Danke.
b_dubb
@b_dubb, Können Sie bitte Ihren Code teilen? Also werde ich es überprüfen und dich wissen lassen.
Arpita Hunka
Ich habe mein Problem gelöst, aber danke, dass Sie sich gemeldet haben.
b_dubb
3

Du solltest get_user_meta(anstelle von get_the_author_meta) verwenden:

function extra_user_profile_fields( $user ) {
    $meta = get_user_meta($user->ID, 'meta_key_name', false);
}
T.Todua
quelle
3

Mit dem Advanced Custom Fields Pro- Plugin können Sie Benutzerprofilen Felder ohne Codierung hinzufügen.

squarecandy
quelle
3
Nur die Pro-Version
ich bin die dümmste Person
Es gibt freie Möglichkeiten, dies mit PHP zu tun.
Johan Pretorius
Ja - es ist definitiv möglich, dies in PHP ohne ACF zu programmieren, wenn Sie es vorziehen. Ich habe die Erfahrung gemacht, dass mehr als 100 Codezeilen erforderlich sind und Sie sich Gedanken über die Nonce-Überprüfung, das Schreiben des HTML-Codes des Formulars usw. machen müssen. Im Gegensatz zu den fünf bis zehn Minuten dauernden Einstellungen in ACF kann dies einige Stunden dauern. Hängt wahrscheinlich davon ab, ob Sie ACF Pro bereits in einem Projekt verwenden.
SquareCandy