Sto usando il plug-in Register Plus Redux per aumentare un modulo di registrazione con campi di metadati personalizzati. Questi campi vengono visualizzati nella parte inferiore di ogni pagina dei dettagli del record utente e possono essere recuperati con get_the_author_meta.
Inoltre, sono in grado di creare colonne nel pannello Utente (la visualizzazione elenco) e di rendere ordinabili queste colonne. Il problema è che, quando faccio clic sull'intestazione della colonna personalizzata, il valore orderby = nell'URL sembra essere ignorato. Detto in altro modo, sembra che la query che genera la visualizzazione elenco degli utenti non includa i metadati personalizzati (ad esempio, forse richiede un'istruzione join se i metadati non sono nella solita posizione per i dati utente?). Mi sembra di aver perso un passo.
Ecco il mio codice per creare le colonne personalizzate:
//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);`
Ed ecco il mio codice per rendere ordinabili queste colonne:
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' );`
Qualche idea su come posso aggiornare la query che genera l'elenco di utenti in modo che includa l'ordinamento per i miei campi personalizzati? Oppure, se non è questo il problema, come fare in modo che le intestazioni di colonna personalizzate ordinino l'elenco degli utenti quando si fa clic?
Grazie.