J'utilise le plugin Register Plus Redux pour augmenter un formulaire d'inscription avec des champs de métadonnées personnalisés. Ces champs s'affichent au bas de chaque page de détail d'enregistrement utilisateur et ils peuvent être récupérés avec get_the_author_meta.
De plus, je peux créer des colonnes dans le panneau Utilisateur (la vue liste) et rendre ces colonnes triables. Le problème est que, lorsque je clique sur l'en-tête de colonne personnalisé, la valeur orderby = dans l'URL semble être ignorée. Autrement dit, il semble que la requête qui génère la vue de liste des utilisateurs n'inclut pas les métadonnées personnalisées (par exemple, elle nécessite peut-être une instruction de jointure si les métadonnées ne se trouvent pas à l'emplacement habituel pour les données utilisateur?). J'ai l'impression d'avoir raté une étape.
Voici mon code pour créer les colonnes personnalisées:
//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);`
Et voici mon code pour rendre ces colonnes triables:
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' );`
Avez-vous des idées sur la façon de mettre à jour la requête qui génère la liste des utilisateurs afin qu'elle inclue le tri par mes champs personnalisés? Ou, si ce n'est pas le problème, comment faire pour que les en-têtes de colonne personnalisés trient la liste des utilisateurs lorsque vous cliquez dessus?
Je vous remercie.