WordPress Pagination Not Working: The Best Fix (2026)
You click “Page 2” on your blog archive, and instead of seeing older posts, you see the same posts as Page 1 or the pagination links don’t do anything at all. WordPress pagination not working almost always comes down to one specific technical cause: a custom query that isn’t properly aware of pagination. Here’s how to diagnose and fix it.
Why This Happens (The Root Cause)
WordPress’s default pagination works automatically on standard archive, category, and blog pages because the main query handles page numbers correctly out of the box. The problem shows up almost exclusively when a custom query is involved for example, a theme or page builder widget that pulls in posts using WP_Query or query_posts() without explicitly telling it which page number to load. When that happens, every “page” of results actually requests the same first set of posts, since nothing is telling the query to move forward.
Step 1: Identify Where the Broken Pagination Is
Before fixing anything, confirm exactly where the issue is happening:
- Main blog/archive page less common, but can happen if a plugin or theme modifies the main query incorrectly
- A custom post listing built with a page builder (like an Elementor Posts widget or similar) the most common source
- A custom page template with manually coded
WP_Querycommon on custom-built or heavily modified themes
Step 2: Fix Pagination on the Main Query (Standard Archives)
If this is happening on your actual blog page or category archives (not a custom widget), the cause is usually a plugin or theme function using query_posts() which is known to break pagination because it replaces the main query rather than modifying it correctly.
Fix: Replace any use of query_posts() with the pre_get_posts action hook instead, which modifies the main query without breaking its pagination awareness:
function custom_query_modification( $query ) {
if ( $query->is_main_query() && ! is_admin() ) {
// your custom query modifications here
}
}
add_action( 'pre_get_posts', 'custom_query_modification' );
This is the correct, pagination-safe way to modify what posts appear on an archive page.
Step 3: Fix Pagination on a Custom WP_Query (Most Common Cause)
If you’re using a custom WP_Query (in a page builder widget, custom template, or shortcode), it needs to be explicitly told which page it’s currently on otherwise it always defaults to page 1’s results regardless of the URL.
The fix involves passing the current page number into the query’s paged parameter:
$paged = ( get_query_var( 'paged' ) ) ? get_query_var( 'paged' ) : 1;
$args = array(
'post_type' => 'post',
'posts_per_page' => 10,
'paged' => $paged,
);
$custom_query = new WP_Query( $args );
Important detail most guides skip: if this custom query is running on a static front page (rather than the actual blog page), you need to use get_query_var('page') instead of get_query_var('paged') using the wrong one is a very common reason this fix doesn’t work even when everything else looks correct.
Step 4: Make Sure Your Pagination Links Actually Reflect the Page Number
Even with the query fixed, your theme needs functioning pagination links. If you’re using a custom template, confirm you’re using WordPress’s built-in pagination functions rather than manually hardcoded links:
the_posts_pagination( array(
'mid_size' => 2,
'prev_text' => __( 'Previous' ),
'next_text' => __( 'Next' ),
) );
This automatically generates correct, working pagination links based on the query results. Manually hardcoded “Page 2” links are a common hidden cause of this issue, since they don’t dynamically update based on the actual query.
Step 5: Check for a Caching Issue Masking the Real Fix
If you’ve applied a fix but pagination still seems broken, a caching plugin might be serving a cached version of “Page 2” that was cached before the fix was applied.
- Clear your caching plugin’s full cache
- Clear CDN cache if applicable
- Test in an incognito window to confirm
Step 6: Check for a Plugin Conflict
Certain SEO or performance plugins can interfere with pagination URLs or query parameters. If the above fixes don’t resolve it:
- Deactivate plugins one at a time
- Test pagination after each deactivation
- Identify the conflicting plugin and check its settings for a relevant option
Diagnostic Quick Reference of wordpress pagination not working
| Symptom | Likely Cause | Fix Step |
|---|---|---|
| Same posts on every page, main blog archive | query_posts() breaking main query |
Step 1 |
| Same posts on every page, custom widget/template | Custom WP_Query missing paged parameter |
Step 2 |
| Correct posts load, but links don’t work | Hardcoded/incorrect pagination links | Step 3 |
| Fixed in code, but still shows old results | Caching | Step 4 |
| Started after installing a new plugin | Plugin conflict | Step 5 |
| Broken specifically on the homepage | Using paged instead of page on a static front page |
Step 6 (detail) |
Frequently Asked Questions of wordpress pagination not working
Why does pagination work on my category pages but not my custom post listing? This is the classic symptom of a custom WP_Query (Step 3) not being told the current page number — the main query pagination WordPress handles automatically works fine, but anything custom needs to be explicitly configured.
Do I need coding knowledge to fix this myself? Understanding and editing the WP_Query parameters (Step 3) does require some comfort with PHP, though if you’re using a page builder’s built-in posts widget rather than custom code, checking the widget’s own pagination settings first is worth trying before touching any code.
Why does this happen more often on the homepage than other pages? If your homepage is set as a static front page (Settings > Reading), it uses a different query variable (page instead of paged) for pagination this distinction is the source of a lot of confusion and is covered in Step 3.
Can a plugin update suddenly break previously working pagination? Yes if a plugin update changes how it queries or filters posts, it can inadvertently break pagination that was working fine before, which is why testing after plugin updates (and knowing how to roll back if needed) matters.
Final Thoughts for wordpress pagination not working
WordPress pagination not working almost always traces back to a custom query that isn’t properly aware of the current page number the fix depends on whether it’s your main archive query or a custom one built into a widget or template. If this is affecting your site and you’d rather not dig through the code yourself, get in touch here and I’ll fix it directly.
Recommended Tools & Plugins
Every tool below is something I actually use on client projects, not a random affiliate list.
- Hosting: Cloudways fast, managed WordPress hosting
- Theme: GeneratePress lightweight, built for speed
- Page Builder: Elementor Pro the builder behind most of my client sites
- Forms: WPForms reliable, beginner-friendly form builder
- Directory/Listing Sites: Directorist for business directory or listing projects
- Elementor Add-ons: Crocoblock (JetEngine) for dynamic, database-driven sites
- Keyword Research: Mangools is the SEO tool I use for keyword research
- Backups: UpdraftPlus never launch a site without a backup plan
- Course Platform: Tutor LMS is the LMS plugin
- Free Speed Test: Google PageSpeed Insights is the free tool I use to check real Core Web Vitals data