Example #1
0
 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;
 }