订购 Foreach 循环结果
Order Foreach loop results
我不能使用 'orderby' => 'post_count',因为贡献者有多个 post 分配给他们。
相反,对于每个用户输出,我使用 count_user_posts() 函数获得他们的 $post_count。
如何根据此编号重新订购商品?从最高到最低?
用户 post 计数不是 $users 数组的一部分:(
// order contributors
$args = array(
'role' => contributors,
'orderby' => 'post_count',
'order' => 'ASC',
'fields' => 'all'
);
// The Query
$user_query = new WP_User_Query( $args );
$users = $user_query->get_results();
echo '<ul>';
$i = 0;
foreach ( $users as $user ) {
$post_count = count_user_posts( $user->id );
if ( count_user_posts( $user->id ) >= 1 ) {
echo '<li class="ws-sort" data-sort="' . $post_count . '"><a href="' . site_url() . '/author/' . $user->user_nicename . '">' . $user->display_name . '</li>';
if (++$i == 8) break;
}
}
echo '</ul>';
您可以将 usort
与自定义函数一起使用:
usort($users, function(&$a,&$b) {
if (!isset($a->_post_count)) $a->_post_count = count_user_posts( $a->id );
if (!isset($b->_post_count)) $b->_post_count = count_user_posts( $b->id );
return $a->_post_count < $b->_post_count;
});
并且您还可以在另一个 foreach 中使用 _post_count
,因为排序修改了每个元素($a
和 $b
通过引用传递)
我不能使用 'orderby' => 'post_count',因为贡献者有多个 post 分配给他们。
相反,对于每个用户输出,我使用 count_user_posts() 函数获得他们的 $post_count。
如何根据此编号重新订购商品?从最高到最低?
用户 post 计数不是 $users 数组的一部分:(
// order contributors
$args = array(
'role' => contributors,
'orderby' => 'post_count',
'order' => 'ASC',
'fields' => 'all'
);
// The Query
$user_query = new WP_User_Query( $args );
$users = $user_query->get_results();
echo '<ul>';
$i = 0;
foreach ( $users as $user ) {
$post_count = count_user_posts( $user->id );
if ( count_user_posts( $user->id ) >= 1 ) {
echo '<li class="ws-sort" data-sort="' . $post_count . '"><a href="' . site_url() . '/author/' . $user->user_nicename . '">' . $user->display_name . '</li>';
if (++$i == 8) break;
}
}
echo '</ul>';
您可以将 usort
与自定义函数一起使用:
usort($users, function(&$a,&$b) {
if (!isset($a->_post_count)) $a->_post_count = count_user_posts( $a->id );
if (!isset($b->_post_count)) $b->_post_count = count_user_posts( $b->id );
return $a->_post_count < $b->_post_count;
});
并且您还可以在另一个 foreach 中使用 _post_count
,因为排序修改了每个元素($a
和 $b
通过引用传递)