Ordina gli utenti per meta utente personalizzato
-
30-10-2019 - |
Domanda
Sto mostrando un elenco di utenti come così:
<ul>
<?php $directors = get_users('role=director');
foreach ($directors as $director) {
$dir_id = $director->ID;
$dir_order = get_user_meta($dir_id, 'exit_director_order', TRUE);
$dir_link = get_bloginfo('home').'/?author='.$dir_id;
if ($dir_id == $director_id ) {
$dir_class= 'current director-'.$dir_id;
} else {
$dir_class= 'director-'.$dir_id;
}
?>
<li>
<a href="<?php print $dir_link; ?>" class="<?php print $dir_class; ?>"><?php echo $director->display_name; ?></a><br>
</li>
<?php } ?>
</ul>
Vorrei ordinare gli utenti di Dir_order (in ordine di numero più piccolo al più grande). Questi valori sono archiviati nel database come interi.
Come potrei farlo?
MODIFICARE:
Ecco la soluzione. Commenti inclusi:
<?php $results = get_users('role=director');
foreach ($results as $result) {
// Get data about each user as an object
$user = get_userdata($result->ID);
// Create a flat array with only the fields we need
$directors[$user->ID] = array(
'dir_order' => $user->exit_director_order,
'dir_id' => $user->ID,
'dir_name' => $user->first_name.' '.$user->last_name
);
}
// Sort
sort($directors);
// The list
echo '<ul id="rightcolumndirector">';
// For each result
foreach ($directors as $director) {
// Set up the variables
$dir_id = $director['dir_id'];
$dir_order = $director['dir_order'];
$dir_name = $director['dir_name'];
$dir_link = get_bloginfo('home').'/?author='.$director['dir_id'];
// The list items
echo '<li>';
echo '<a href="'.$dir_link.'" id="dir-id-'.$dir_id.'">'.$dir_name.'</a>';
echo '</li>';
}
echo '</ul>';
?>
Nessuna soluzione corretta
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a wordpress.stackexchange