Here is the useful code snippet that I use to fix the issue where using a custom query on a WordPress category or archive or even index page breaks the pagination.
Simply copy and paste this code into your theme’s functions file:
function my_post_queries( $query ) { // do not alter the query on wp-admin pages and only alter it if it's the main query if (!is_admin() && $query->is_main_query()){ // alter the query for the home page if(is_home()){ $query->set('posts_per_page', 3); $query->set('cat', '9'); } } add_action( 'pre_get_posts', 'my_post_queries' );
And then edit as necessary!
To target a specific category, you would use this code:
// alter the query for the Apples category page if(is_category('Apples')){ $query->set('posts_per_page', 6); }
I have found this to be one of the easiest ways to fix the pagination issues I have run into when using custom WordPress queries. Let me know if you have a different or better way of doing so 🙂