La fonction suivante affichera une liste d'utilisateurs en fonction de leurs métadonnées:
<?php function get_users_by_meta_data( $meta_key, $meta_value ) {
$user_query = new WP_User_Query(
array(
'meta_key' => $meta_key,
'meta_value' => $meta_value
)
);
$users = $user_query->get_results();
return $users;
} ?>
J'utilise la fonction comme celle-ci, où "school_division" est la méta_key et "Richmond" est la meta_value:
<h2>REGION 2</h2>
<ul>
<?php foreach( get_users_by_meta_data( 'school_division', 'Richmond') as $user ) { ?>
<li><?php echo $user->first_name; ?> <?php echo $user->last_name; ?></li>
<?php } ?>
</ul>
Ceci répertorie correctement tous les utilisateurs de la division scolaire de Richmond. Mais je ne veux pas avoir à spécifier "Richmond" (la meta_value). Je veux parcourir chaque méta_value dans la méta_key "school_division", puis répertorier les utilisateurs associés. Donc, le résultat serait quelque chose comme:
Richmond
Chicago
New York
Je pense que je dois ajouter une autre boucle foreach. Mais je ne sais pas comment réécrire la fonction pour faire tout ça. Peut-être que la fonction que j'utilise est inversée à cette fin. Merci pour toute aide!
****** METTRE À JOUR *********
J'ai apporté des modifications qui sont, espérons-le, plus efficaces (?). Voici donc mon code mis à jour. Il renvoie tous les utilisateurs de la région 2, regroupés par ville de division scolaire.
<?php function get_users_by_meta_data( $region, $division ) {
$user_query = new WP_User_Query(
array(
'meta_query' => array(
'relation' => 'AND',
array(
'key' => 'REGION',
'value' => $region,
),
array(
'key' => 'SCHOOL_DIVISION',
'value' => $division
)
)
)
);
// Get the results from the query
$users = $user_query->get_results();
return $users;
}
?>
<h1> REGION 2</h2>
<?php
$cities = $wpdb->get_col("SELECT DISTINCT meta_value FROM $wpdb->usermeta WHERE meta_key = 'SCHOOL_DIVISION'" );
foreach ( $cities as $city ) { ?>
<h2><?php echo $city; ?></h2>
<ul><?php
foreach ( get_users_by_meta_data( '2', $city ) as $user ) { ?>
<li><?php echo $user->first_name; ?> <?php echo $user->last_name; ?></li>
<?php } ?>
</ul><?php
}
?>
Qu'en est-il de mettre la ville/les régions/ce que vous voulez dans un tableau que vous pouvez parcourir? Quelque chose comme ça:
$cities = array( 'Richmond', 'Chicago', 'New York' );
foreach ( $cities as $city ) { ?>
<h2><?php echo $city; ?></h2>
<ul><?php
foreach ( get_users_by_meta_data( 'school_division', $city ) as $user ) { ?>
<li><?php echo $user->first_name; ?> <?php echo $user->last_name; ?></li>
<?php } ?>
</ul><?php
}