function widget($args = [], $instance = []) { $instance = array_merge(['title' => ___('User point rank'), 'total_number' => 100, 'rand_number' => 12], $instance); if ((int) $instance['total_number'] === 0 || (int) $instance['rand_number'] === 0) { return false; } echo $args['before_widget']; echo $args['before_title']; ?> <i class="fa fa-bar-chart"></i> <?php echo $instance['title']; ?> <?php echo $args['after_title']; $query = new WP_User_Query(['meta_key' => theme_custom_point::$user_meta_key['point'], 'orderby' => 'meta_value_num', 'order' => 'desc', 'number' => (int) $instance['total_number'], 'fields' => 'ID']); $users = $query->get_results(); $count = count($users); if ($count < 2) { ?> <div class="content"> <div class="page-tip"><?php echo status_tip('info', ___('No matched user yet.')); ?> </div> </div> <?php } else { /** * rand */ if ($instance['rand_number'] > $count) { $instance['rand_number'] = $count; } $rand_users = (array) array_rand($users, $instance['rand_number']); ?> <div class="content"> <div class="user-lists row"> <?php $user = null; foreach ($rand_users as $k) { theme_functions::the_user_list(['user_id' => $users[$k], 'extra' => 'point', 'extra_title' => sprintf(__x('%s %s', 'eg. 20 points'), '%', theme_custom_point::get_point_name())]); } ?> </div> </div> <?php } unset($query, $users, $rand_users); echo $args['after_widget']; }