Ich verwende das Register Plus Redux-Plugin, um ein Registrierungsformular mit benutzerdefinierten Metadatenfeldern zu erweitern. Diese Felder werden unten auf jeder Seite mit Benutzerdatensätzen angezeigt und können mit get_the_author_meta abgerufen werden.
Außerdem kann ich im Benutzerfenster (der Listenansicht) Spalten erstellen und diese Spalten sortierbar machen. Das Problem ist, dass beim Klicken auf die benutzerdefinierte Spaltenüberschrift der Wert orderby = in der URL ignoriert wird. Anders ausgedrückt, die Abfrage, die die Listenansicht der Benutzer generiert, enthält anscheinend keine benutzerdefinierten Metadaten (z. B. ist möglicherweise eine Join-Anweisung erforderlich, wenn sich die Metadaten nicht an der für Benutzerdaten üblichen Stelle befinden?). Es fühlt sich an, als hätte ich einen Schritt verpasst.
Hier ist mein Code zum Erstellen der benutzerdefinierten Spalten:
//add columns to User panel list page
function add_user_columns( $defaults ) {
$defaults['company'] = __('Company', 'user-column');
$defaults['title'] = __('Title', 'user-column');
return $defaults;
}
function add_custom_user_columns($value, $column_name, $id) {
if( $column_name == 'company' ) {
return get_the_author_meta( 'company_name', $id );
}
if( $column_name == 'title' ) {
return get_the_author_meta( 'titlefunction', $id );
}
}
add_action('manage_users_custom_column', 'add_custom_user_columns', 15, 3);
add_filter('manage_users_columns', 'add_user_columns', 15, 1);`
Und hier ist mein Code, um diese Spalten sortierbar zu machen:
function user_sortable_columns( $columns ) {
$columns['company'] = 'Company';
return $columns;
}
add_filter( 'manage_users_sortable_columns', 'user_sortable_columns' );
function user_column_orderby( $vars ) {
if ( isset( $vars['orderby'] ) && 'company' == $vars['orderby'] ) {
$vars = array_merge( $vars, array(
'meta_key' => 'company',
'orderby' => 'meta_value',
'order' => 'asc'
) );
}
return $vars;
}
add_filter( 'request', 'user_column_orderby' );`
Irgendwelche Ideen, wie ich die Abfrage, die die Liste der Benutzer generiert, so aktualisieren kann, dass sie nach meinen benutzerdefinierten Feldern sortiert wird? Oder, wenn dies nicht das Problem ist, wie lassen Sie die benutzerdefinierten Spaltenüberschriften die Liste der Benutzer sortieren, wenn Sie darauf klicken?
Vielen Dank.