私はそのようなユーザーのリストを見せています。
<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>
ユーザーをdir_orderの順に並べます(番号の小さい順に並べます)。これらの値は整数としてデータベースに格納されます。
これをどのようにして行うのでしょうか。
編集:
これが解決策です。コメントが含まれています:
<?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>';
?>
これが解決策です。コメントが含まれています:
<?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>';
?>
すべてのユーザーをカスタムメタフィールド順に並べるには、meta_key
とorderby meta_value
またはmeta_value_num
を設定します。
$results = get_users( array(
'role' => 'director',
'meta_key' => 'exit_director_order',
'orderby' => 'meta_value_num',
'order' => 'ASC'
) );
EDIT:これは動作しているようで、動作しているべきです(SHOULD)。私はそれが次のバージョンでうまくいくと信じています。しかし今のところ、それは機能しません。
ここで選ばれた答えは私がその時までに見つけた最もよい選択です: 姓によって特定の役割のユーザを注文する