web-dev-qa-db-fra.com

pre_user_query meta_query admin liste d'utilisateurs

J'essaie d'utiliser les variables pre_user_query' to change the query to include somemeta_query`.

Mon objectif est d'afficher uniquement les utilisateurs de la liste s'ils partagent un meta_value commun avec l'utilisateur actuellement connecté ...

function modify_user_list($query){
    $user = wp_get_current_user();

    if( ! current_user_can( 'edit_user' ) ) return $query;

    $user_id = $user->ID; 
    $user_branch_number = get_user_meta($user_id, 'user_branch_number', true);

    $query->query_vars['meta_key'] = 'user_branch_number';
    $query->query_vars['meta_value'] = $user_branch_number; 
    $query->query_vars['meta_compare'] = '=';

}
add_action('pre_user_query', 'modify_user_list');

Si je print_r la requête, cela montrera que le query_vars a été mis à jour de manière appropriée, mais la liste des utilisateurs du panneau d'administration n'est pas affectée - la même ancienne liste de chaque utilisateur.

2
sirmdawg

Vous utilisez pre_user_query conformément à la documentation WordPress

Se déclenche après l'analyse de WP_User_Query et avant l'exécution de la requête

Ensuite, vous devriez utiliser pre_get_users, tout comme pre_get_posts, lorsque vos arguments ont une signification pour WordPress.

pre_get_users Se déclenche avant l'analyse de WP_User_Query

Remplacez votre crochet par

add_action('pre_get_users', 'modify_user_list');

4
Sumit