I have thousands of posts that I am displaying on my home page. I want to control number of posts so for this I am using `posts_per_page `but it is not working for me. I am also resetting the query before this loop using `wp_reset_query();` and tried this code in `functions.php` as well. add_action( 'pre_get_posts', 'set_posts_per_page' ); function set_posts_per_page( $query ) { global $wp_the_query; $query->set( 'posts_per_page', 10 ); return $query; } But nothing working for me. I am using covert store builder theme. Any suggestion will be much appreciated. Thank you! Here is complete code for this loop. wp_reset_query(); $args = Array('meta_key' => '_imwb_zonpress_post_ctr', 'orderby' => 'meta_value_num', 'order' => 'DESC', 'posts_per_page' => 1, 'paged' => get_query_var( 'page' ) , ); $fpexcludecats = imwb_zonpress_get_option('fpexcludecats'); if (! empty( $fpexcludecats ) ) { $cats = explode(",", htmlspecialchars(imwb_zonpress_get_option('fpexcludecats')) ); foreach ($cats as $key => $value) { $cats[$key] = "-".$value; } $args = array_merge($args, Array('cat' => implode(',', $cats))); } $query = new WP_Query( $args ); global $wp_query; // Put default query object in a temp variable $tmp_query = $wp_query; // Now wipe it out completely $wp_query = null; // Re-populate the global with our custom query $wp_query = $query; <?php while ( $query->have_posts() ) : $query->the_post(); ?> if($num_ads_to_show && $ads_shown < $num_ads_to_show && $posts_b4_ads == 0) { $posts_b4_ads = mt_rand(imwb_zonpress_get_ads_option('postsshownfrom'), imwb_zonpress_get_ads_option('postsshownto')); $advert = imwb_zonpress_get_advert($ads_shown++); ?> <li class="post advert"> <h1 class="title"><?php echo $advert['title'];?></h1> <div class="content"> <?php echo do_shortcode($advert['content']);?> </div> </li> <?php } $zp_is_product = false; $ctr_track_attr = ""; if ( imwb_zonpress_is_product() ) { $zp_is_product = true; $ctr_track_attr = " class='zp-ctr-track' data-post-item='".get_the_ID()."'"; } Then there is some code to display image, title and excerpt and I think this should not effect number of posts. After this these lines are given <?php $posts_b4_ads--; endwhile; ?>