2016-05-10 19 views
2

Ich versuche, der Seite user-edit.php in WordPress ein zusätzliches Feld hinzuzufügen.Hinzufügen eines benutzerdefinierten Felds zur Benutzerbearbeitungsseite innerhalb eines vorhandenen Abschnitts

Ich möchte es in den Bereich "Über diesen Benutzer/Sie" direkt über dem "Biographical Info" -Feld hinzufügen. Ich hatte die Datei bereits bearbeitet, um eine weitere hinzuzufügen, aber aus irgendeinem Grund werden die Informationen, die ich eingegeben habe, nicht gespeichert.

<table class="form-table"> 
<tr class="user-job-title-wrap"> 
    <th><label for="job_title"><?php _e('Job Title'); ?></label></th> 
    <td><input type="text" name="job_title" id="job_title" value="<?php echo esc_attr($profileuser->job_title) ?>" class="regular-text ltr" /> 
</td> 
</tr> 
<tr class="user-description-wrap"> 
    <th><label for="description"><?php _e('Biographical Info'); ?></label></th> 
    <td><textarea name="description" id="description" rows="5" cols="30"><?php echo $profileuser->description; // textarea_escaped ?></textarea> 
    <p class="description"><?php _e('Share a little biographical information to fill out your profile. This may be shown publicly.'); ?></p></td> 
</tr> 
... 

Es fügt der wp_usermeta-db den richtigen meta_key hinzu, aber der meta_value bleibt leer. Wenn ich den meta_value in der Datenbank manuell eingabe und die Benutzerbearbeitungsseite neu lade, wird der Wert korrekt in das Eingabefeld geladen, aber alle Änderungen, die an diesem Feld vorgenommen werden, werden nicht in der Datenbank aufgezeichnet.

+0

Behalten Sie die Dinge wie zuvor, wenn Sie möchten, und verwenden Sie nur ** save_extra_user_fields() ** Hook-Funktion, weil es Ihren Datensatz zu DB-Problem lösen. – LoicTheAztec

Antwort

2

Hier sind die Wordpress-Haken Felder hinzufügen und Speichern von aktualisierten Felder Daten:

// ADDING CUSTOM FIELDS TO INDIVIDUAL USER SETTINGS PAGE AND TO USER LIST 
add_action('show_user_profile', 'add_extra_user_fields'); 
add_action('edit_user_profile', 'add_extra_user_fields'); 
function add_extra_user_fields($user) 
{ 
    ?> 
     <h3><?php _e("My TITLE", "my_theme_domain"); ?></h3> 
     <table class="form-table"> 
      <tr class="user-job-title-wrap"> 
       <th><label for="job_title"><?php _e('Job Title'); ?></label></th> 
       <td><input type="text" name="job_title" id="job_title" value="<?php echo esc_attr($profileuser->job_title) ?>" class="regular-text ltr" /> 
      </td> 
      </tr> 
      <tr class="user-description-wrap"> 
       <th><label for="description"><?php _e('Biographical Info'); ?></label></th> 
       <td><textarea name="description" id="description" rows="5" cols="30"><?php echo $profileuser->description; // textarea_escaped ?></textarea> 
       <p class="description"><?php _e('Share a little biographical information to fill out your profile. This may be shown publicly.'); ?></p></td> 
      </tr> 
     </table> 
    <?php 
} 

- (aktualisiert) - Sie können nur verwenden save_extra_user_fields unten Ihr Problem zu lösen (... rettenden Informationen ...) und behalten Sie Ihren Code, wenn Sie möchten.

// Saving Updated fields data 
add_action('personal_options_update', 'save_extra_user_fields'); 
add_action('edit_user_profile_update', 'save_extra_user_fields'); 
function save_extra_user_fields($user_id) 
{ 
    update_user_meta($user_id, 'job_title', sanitize_text_field($_POST['job_title'])); 
    update_user_meta($user_id, 'description', sanitize_text_field($_POST['description'])); 
} 

Dieser Code auf function.php Datei Ihres aktiven Kind Thema oder ein Thema ...

Mit Ihren benutzerdefinierten Benutzerfeldern Daten mit PHP geht:

  • Zurückgeben von Daten: get_the_author_meta('your_field_slug', $userID);
  • angezeigten Daten (Echo der Daten): the_author_meta('your_field_slug', $userID);
+0

Ist es möglich, dies ohne die Haken zu tun? Da die Hooks am unteren Rand der Seite einen neuen "Abschnitt" erstellen, möchte ich diesen jedoch vor dem Textfeld "Biographical Info" hinzufügen. Es macht mir nichts aus, Core-Dateien zu bearbeiten. –

+0

Vielen Dank, das ist wirklich hilfreich. Ich habe versucht, den gleichen Code wie in Ihrer Bearbeitung zu verwenden, aber ich habe versucht, die Daten mit '$ profileuser-> job_title' und nicht mit 'get_the_author_meta()' –

+0

fertig zu bekommen. Fertig! Das tut mir leid. Ich wollte es definitiv vorher tun. Danke nochmal für die Hilfe. Ich war nicht 100%, welche Haken ich verwenden musste. Alles funktioniert so, wie es jetzt nötig ist! –

Verwandte Themen