Fügen Sie benutzerdefiniertes Benutzer-Meta zur Benutzerverwaltungsseite in WordPress hinzu
Lesezeit: 4 Minuten
James
Ich habe auf meiner Website ein spezielles Formular erstellt, das es meinen Benutzern ermöglicht, einen Schlüssel einzugeben. ich benutze add_user_meta() um die Metadaten in die Datenbank hinzuzufügen. Ich möchte diesen Schlüssel sehen können, wenn ich im Admin Center auf Benutzer klicke.
Wie würde ich vorgehen, um diese Spalte zu ergänzen?
Nachfolgend finden Sie die Metadateninformationen, die ich verwende
add_user_meta($userId,'code','12345');
Wir möchten es nur der Ansicht auf users.php in der Tabelle hinzufügen können, die den Benutzernamen, die E-Mail-Adresse und die Rolle anzeigt.
Ich habe Code wie diesen verwendet, um die Benutzer-ID anzuzeigen, aber ich kann nicht herausfinden, wie ich ihr Meta anzeigen soll.
Es dient zum Anzeigen und Aktualisieren der benutzerdefinierten Benutzermetadaten.
<?php
// Hooks near the bottom of profile page (if current user)
add_action('show_user_profile', 'custom_user_profile_fields');
// Hooks near the bottom of the profile page (if not current user)
add_action('edit_user_profile', 'custom_user_profile_fields');
// @param WP_User $user
function custom_user_profile_fields( $user ) {
?>
<table class="form-table">
<tr>
<th>
<label for="code"><?php _e( 'Custom Meta' ); ?></label>
</th>
<td>
<input type="text" name="code" id="code" value="<?php echo esc_attr( get_the_author_meta( 'code', $user->ID ) ); ?>" class="regular-text" />
</td>
</tr>
</table>
<?php
}
// Hook is used to save custom fields that have been added to the WordPress profile page (if current user)
add_action( 'personal_options_update', 'update_extra_profile_fields' );
// Hook is used to save custom fields that have been added to the WordPress profile page (if not current user)
add_action( 'edit_user_profile_update', 'update_extra_profile_fields' );
function update_extra_profile_fields( $user_id ) {
if ( current_user_can( 'edit_user', $user_id ) )
update_user_meta( $user_id, 'code', $_POST['code'] );
}
?>
Ich wollte das Feld zu users.php hinzufügen, wo es den Benutzernamen, die E-Mail-Adresse und die Rollen anzeigt. Wir wollen nicht die Möglichkeit, es zu bearbeiten.
– James
28. Mai 2015 um 0:58 Uhr
Verwenden Sie also einfach den ersten Teil des Codes, um ihn anzuzeigen, und ändern Sie das Eingabeelement in etwas, das nicht bearbeitet werden kann.
– Daniel
28. Mai 2015 um 1:02 Uhr
Ich möchte es nicht auf der user.php anzeigen Ich möchte es auf der users.php anzeigen. Dies wäre die Seite, die alle Benutzernamen, E-Mails und Rollen in einer Tabelle anzeigt.
– James
28. Mai 2015 um 1:15 Uhr
Die obige Antwort von Mordred funktionierte für mich, nachdem ich die zweite geändert hatte add_filter zu add_action. Hier ist der geänderte Code:
function yoursite_manage_users_columns( $columns ) {
// $columns is a key/value array of column slugs and names
$columns[ 'custom_field' ] = 'Subscription';
return $columns;
}
add_filter( 'manage_users_columns', 'yoursite_manage_users_columns', 10, 1 );
function yoursite_manage_users_custom_column( $output, $column_key, $user_id ) {
switch ( $column_key ) {
case 'custom_field':
$value = get_user_meta( $user_id, 'custom_field', true );
return $value;
break;
default: break;
}
// if no column slug found, return default output value
return $output;
}
add_action( 'manage_users_custom_column', 'yoursite_manage_users_custom_column', 10, 3 );
Um benutzerdefinierte user_meta-Felder zu users.php hinzuzufügen, müssen Sie Folgendes tun:
function yoursite_manage_users_columns( $columns ) {
// $columns is a key/value array of column slugs and names
$columns[ 'custom_field' ] = 'Subscription';
return $columns;
}
add_filter( 'manage_users_columns', 'yoursite_manage_users_columns', 10, 1 );
function yoursite_manage_users_custom_column( $output, $column_key, $user_id ) {
switch ( $column_key ) {
case 'custom_field':
$value = get_user_meta( $user_id, 'custom_field', true );
return $value;
break;
default: break;
}
// if no column slug found, return default output value
return $output;
}
add_filter( 'manage_users_custom_column', 'yoursite_manage_users_custom_column', 10, 3 );
Zu erkennen, dass dies ein bisschen wie ein alter Thread ist, aber ich steckte bei einem sehr ähnlichen Problem fest und dachte, ich würde teilen, was ich gefunden habe, was sich als sehr einfache Lösung herausstellte.