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_Query common on custom-built or heavily modified themesWordPress Pagination Not Working:

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:

php
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:

php
$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:

php
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.

wordpress pagination not working custom query fix

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:

  1. Deactivate plugins one at a time
  2. Test pagination after each deactivation
  3. 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

Leave a Reply

Your email address will not be published. Required fields are marked *