On archive pages, I let WordPress handle the archive page and load the first 10 posts, then I load more posts with AJAX requests, and this AJAX request is returning weird results.
My query inside the AJAX handler looks like this:
$query_args = array( 'post_type' => 'post', 'posts_per_page' => get_option( 'posts_per_page' ), // 10 by default 'offset' => get_option( 'posts_per_page' ), // 10 by default 'cat' => 8 // the category ID ); $wp_query_archive = new WP_Query( $query_args );
The problem: If the post count of the AJAX query is less than 10, i get one duplicate post.
If the posts were numbered, the first query (the default archive query that returns the first 10 posts in selected category) returns:
1,2,3,4,5,6,7,8,9,10, the second query made by AJAX request and described above returns:
10,11. Which then results in post duplication on front end.
However, if there is 10 or more post for the AJAX query, the query returns:
If there is only one post returned by the AJAX query, the query returns only that one post:
11, which is right, but when there are two posts to return, the query returns:
When there's 5 posts for the AJAX query, the query returns the right posts too, meaning:
Is there some magic to
WP_Query() that makes it behave this way?
Addition: I can't use
paged query parameter, as Jacob Peattie pointed out, because I am using that query to load posts from multiple "pages" when the user hits page with hash containing string "#page3" for example.