ce code fonctionne très bien! le problème est que ce code masque également l'utilisateur actuel (s'il est administrateur), donc ce que j'essaie de faire est de masquer tous les administrateurs sauf l'utilisateur actuel.
j'ai besoin d'aide pour éditer SQL pour que cela fonctionne avec "$ user_ID"
function isa_pre_user_query($user_search) {
$user = wp_get_current_user();
//if (!current_user_can('administrator')) { // Is Not Administrator - Remove Administrator
global $wpdb;
$user_ID = get_current_user_id();
$user_search->query_where =
str_replace('WHERE 1=1',
"WHERE 1=1 AND {$wpdb->users}.ID IN (
SELECT {$wpdb->usermeta}.user_id FROM $wpdb->usermeta
WHERE {$wpdb->usermeta}.meta_key = '{$wpdb->prefix}capabilities'
AND {$wpdb->usermeta}.meta_value NOT LIKE '%administrator%')",
$user_search->query_where
);
//}
}
add_action('pre_user_query','isa_pre_user_query');
Citant les WordPress VIP Meilleures pratiques de développement :
Rappelez-vous que la base de données n'est pas une boîte à outils. Bien que vous puissiez effectuer beaucoup de travail côté base de données, votre code évoluera beaucoup mieux en gardant les requêtes simples et en effectuant les calculs et la logique nécessaires en PHP.
Cela dit, vous pouvez simplement essayer d’obtenir tous les utilisateurs non-administrateurs, puis d’ajouter l’utilisateur actuel aux résultats, s’il dispose de capacités d’administrateur.
Vous pouvez facilement y parvenir en utilisant des fonctions WordPress de niveau supérieur:
<?php
/* get all non-admin users */
$args = array(
'meta_key' => 'wp_capabilities',
'meta_value' => 'Administrator', /* you better check for a capability, not a role */
'meta_compare' => 'NOT LIKE'
);
$user_query = new WP_User_Query( $args );
/* if current user is admin, get its user object */
$current_admin_user = current_user_can( 'activate_plugins' ) ? wp_get_current_user() : null;
/* merge non-admin users with current admin-user */
$results = $user_query->get_results();
$results[] = $current_admin_user;
/* update the user query */
$user_query->__set( 'results', $results );
$user_query->__set( 'total_users', count( $results ));
/* do whatever you want */
print_r($user_query);