public static function get_recent_post_by_view($args = array()) { $posts_per_page = isset($args['posts_per_page']) ? $args['posts_per_page'] : 8; $new_args = array('posts_per_page' => $posts_per_page * 3, 'post_type' => isset($args['post_type']) ? $args['post_type'] : 'post'); if (isset($args['post__not_in'])) { $new_args['post__not_in'] = $args['post__not_in']; } $query = self::get_recent_post($new_args); $post_ids = array(); if ($query->have_posts()) { $my_posts = $query->posts; $temp_posts = array(); foreach ($my_posts as $post) { $post_id = $post->ID; $item = array('id' => $post_id, 'views' => SB_Post::get_views($post_id)); array_push($temp_posts, $item); } $temp_posts = SB_PHP::array_sort($temp_posts, 'views', 'DESC'); $count = 0; foreach ($temp_posts as $temp) { if ($count >= $posts_per_page) { break; } array_push($post_ids, $temp['id']); $count++; } if (count($post_ids) > 0) { $args['post__in'] = $post_ids; } $args['orderby'] = 'meta_value_num'; $args['meta_key'] = 'views'; $query = self::get($args); } return $query; }