it-swarm.com.de

Füge ein zusätzliches Feld hinzu, wenn der Administrator einen Benutzer erstellt

Ich habe ein zusätzliches Feld erstellt, das der Benutzer auf seiner Seite "Ihr Profil" bearbeiten kann. Das zusätzliche Feld ist auch auf der WordPress-Registrierungsseite verfügbar. Was ich fragen möchte, ist, wie man das Feld zu Benutzer> Neue Seite hinzufügen hinzufügt? Wenn der Administrator einen Benutzer erstellt, gibt der Administrator auch das zusätzliche Feld des Benutzers ein

2
Permana

Da auf dieser Seite (Benutzer> Neue Seite hinzufügen) keine anderen Hooks als user_new_form_tag vorhanden sind, können keine neuen Felder hinzugefügt werden, es sei denn, Sie hacken die Kerndatei wp-admin/user-new.php.

Sie könnten versuchen, dieses zusätzliche Feld hinzuzufügen, indem Sie es in JQuery hinzufügen und verarbeiten, wenn der $_post['action'] == 'adduser', aber das wird keine sehr gute Übung sein.

1
Bainternet

Dies ist eine ältere Frage, aber es gibt diese jetzt .. Ende der Form obwohl (nur).

WP Version 4.3.0 - Datei "./wp-admin/user-new.php" - Zeile 330

/**
 * Fires at the end of the new user form.
 *
 * Passes a contextual string to make both types of new user forms
 * uniquely targetable. Contexts are 'add-existing-user' (Multisite),
 * and 'add-new-user' (single site and network admin).
 *
 * @since 3.7.0
 *
 * @param string $type A contextual string specifying which type of new user form the hook follows.
 */
do_action( 'user_new_form', 'add-existing-user' );

Kurzes Beispiel:

add_action('user_new_form', 'addmycustomfield');
function addmycustomfield() {
?>
<table class="form-table">
<tr>
<th scope="row">My test field:</th>
<td><input type="text" size="32" name="testfield" value="<?php echo get_option('madeup_wp_option'); ?>" /></td>
</tr>
</table> 
<?php
}

Dadurch wird ein Feld am Ende des Benutzerformulars hinzugefügt. Das Speichern von benutzerdefinierten Benutzer-Metadaten/etc aus der Registrierung/Benutzer hinzufügen/Profil bearbeiten/etc ist nicht Gegenstand der Frage und wurde bereits mehrfach beantwortet. Siehe auch Kommentare.

0
bshea

Ich war in der Lage, dies durch einen ziemlich fragilen Hack zu tun. Es verwendet den Ausgabepuffer, um das neue Feld einzufügen. Zum Glück gibt es einen schönen Haken, um das Feld zu retten.

// FRAGILE!  This rewrites code directly in the buffer, upgrading WP may break this
function wpse18772_add_fields( $buffer ) {
  $input_html = '<input type="text" name="your-new-field" id="your-new-field">';

  // will insert a new field after "role"
  $buffer = preg_replace( '~<label\s+for="role">(.*?)</tr>~ims', '<label for="role">$1</tr><tr class="form-field"><th>My New Field</th><td>' . $input_html . '</td></tr>', $buffer );

  return $buffer;
}

function wpse18772_buffer_start() { ob_start("wpse18772_add_fields");  }
function wpse18772_buffer_end() { ob_end_flush(); }
add_action('admin_head', 'wpse18772_buffer_start', 10, 1);
add_action('admin_footer', 'wpse18772_buffer_end', 10, 1);

function wpse18772_save_fields($user_id) {
  if($_POST['action'] != "adduser" && $_POST['action'] != "createuser") return;

  if(!empty($_POST['your-new-field'])) {
    // save field to meta, or do whatever you want to here
  }
}
add_action('user_register', 'wpse18772_save_fields');
0
funwhilelost

Siehe diese Antwort . Es gibt keine Hooks, aber Sie können dies mit jQuery tun. Fügen Sie einfach Ihr HTML-Markup mit jQuery hinzu, und es wird erledigt.

0
Ralf912