订购Foreach循环结果

时间:2015-03-26 15:16:26

标签: php wordpress foreach

我无法使用' orderby' => ' POST_COUNT'作为贡献者分配了多个帖子。

相反,对于每个用户输出,我使用count_user_posts()函数获取$ post_count。

如何根据此号码重新订购商品?最高到最低?

用户帖子计数不属于$ 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>';

1 个答案:

答案 0 :(得分:0)

您可以将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通过引用传递)