it-swarm.com.de

Benutzerprofil/Benutzerdefinierte Felder hinzufügen

Hallo: Ich versuche, der Standard-Wordpress-Seite wp-admin/profile.php 7 benutzerdefinierte Felder hinzuzufügen. Es gibt einige Sites, die einen einfachen Code dafür vorschlagen, zum Beispiel:

http://wpengineer.com/2173/custom-fields-wordpress-user-profile/

Ich möchte jedoch in der Lage sein, meine benutzerdefinierten Felder so hinzuzufügen, dass sie genau unter dem Feld "Biografische Informationen" und über dem Feld "Kennwort ändern" angezeigt werden. Alles, was ich gelesen und ausprobiert habe, platziert benutzerdefinierte Felder am unteren Rand der Seite, aber ich möchte, dass sie zwischen dem Feld "Biografische Informationen" und dem Feld "Kennwort ändern" angezeigt werden.

Wie kann ich das machen? Ist es möglich? Gehört dazu auch die Verwendung von Javascript? Bitte beraten. Vielen Dank.

3
Steve Doran

Es gibt keine WordPress-Methode, um Felder zwischen Benutzer-Bio und Passwort hinzuzufügen, aber wie Sie selbst sagten, können Sie es auf die Art von Javascript tun. Der folgende Code fügt ein einzelnes Feld hinzu, um Ihnen ein Beispiel zu geben, wie Sie dasselbe erreichen können.

HINWEIS: Der folgende Code zeigt nur die Felder an, verarbeitet jedoch keine Informationen oder speichert die Feldwerte, da dieser Teil mit dem im Artikel verknüpft in der Frage beschriebenen identisch ist.

Fügen Sie die Felder hinzu

Fügen Sie den folgenden Code in die Datei functions.php ein, um die Felder anzuzeigen.

function wpse39285_add_custom_user_profile_fields( $user ) {
?>
    <table id="custom_user_field_table" class="form-table">
        <tr id="custom_user_field_row">
            <th>
                <label for="custom_field"><?php _e('Field', 'your_textdomain'); ?></label>
            </th>
            <td>
                <input type="text" name="custom_field" id="custom_field" value="<?php echo esc_attr( get_the_author_meta( 'custom_field', $user->ID ) ); ?>" class="regular-text" /><br />
                <span class="description"><?php _e('Please enter your custom_field value.', 'your_textdomain'); ?></span>
            </td>
        </tr>
    </table>
<?php 
}
add_action( 'show_user_profile', 'wpse39285_add_custom_user_profile_fields' );
add_action( 'edit_user_profile', 'wpse39285_add_custom_user_profile_fields' );

Mit dem obigen Code werden Ihre benutzerdefinierten Felder nach den Kennwortfeldern platziert.

Verschiebe die Felder

Der folgende Code fügt ein Javascript nur dann in den WordPress Admin-Kopf ein, wenn der Benutzer sein eigenes Profil anzeigt oder ein Administrator das Profil einer anderen Person bearbeitet.

function wpse39285_field_placement_js() {
    $screen = get_current_screen();
    if ( $screen->id != "profile" && $screen->id != "user-edit" ) 
        return;
    ?>
    <script type="text/javascript">
        jQuery(document).ready(function($) {
            field = $('#custom_user_field_row').remove();
            field.insertBefore('#password');
        });
    </script>
    <?php
}
add_action( 'admin_head', 'wpse39285_field_placement_js' );

Das obige Javascript bewirkt, dass das Feld zwischen dem Passwort- und dem Biofeld wechselt. Wenn der Benutzer die Seite in einem Nicht-Javascript-Browser anzeigt, werden die Felder nicht verschoben und standardmäßig angezeigt.

Feld mit aktiviertem JavaScript-Browser

field with javascript enabled browser

Feld mit Nicht-JavaScript-Browser

field with javascript disabled browser

4

Mein Rat ist: Spielen/hacken Sie das System nicht. Erstellen Sie Inhalte dort, wo die Kernentwickler dies wünschen. Der Grund, warum Sie die Felder genau dort haben möchten, ist wahrscheinlich nicht gut, um den Fluss von Wordpress zu umgehen.

Verwenden Sie den Aktions-Hook profile_personal_options , um einen neuen Abschnitt für die Einstellungen einzufügen, die Sie auf der Seite benötigen. Dies ist nicht nur technisch einwandfrei, sondern auch für Benutzer klarer (die wissen, wie WP normalerweise aussieht).

4
Raphael

Für mich hat die Antwort von Hameedullah Khan gut funktioniert. Ich habe nur eine kleine Korrektur vorgenommen, weil meine neuen Felder das Seitenlayout beschädigt haben. Also habe ich im jquery code hinzugefügt

jQuery(document).ready(function($) {
            field = $('#custom_user_field_row').remove();
            field.insertBefore('#password');
            $('#custom_user_field_row').wrapAll('<tr><td colspan="2"></td></tr>');
        });

den Tisch ausgerichtet zu halten.

0
Ziqurrat

Da Sie dies nicht wirklich tun können, würde ich empfehlen, das Theme My Login Plugin zu verwenden, ein sehr einfaches Mitglieder-Plugin, das nur "Login" -, "Logout" - und "Profil" -Seiten erstellt Passen Sie die Anpassung Ihres Themas an. Sie können die Reihenfolge der Felder in einer eigenen Datei ändern, die Sie Ihrem untergeordneten Design hinzufügen können, damit Sie keine Probleme haben, wenn etwas schief geht.

Das einzige ist, dass dein Profil nicht mehr unter user-edit.php, sondern unter your-profile.php sichtbar ist.

0
user3206631