WordPress Pagination Not Working 8 Easy, Proven Fixes

By Basharat Ali Khan | Last updated: October 27, 2026

WordPress pagination not working usually shows up in one of three ways. You click “Page 2” and see the same posts as page 1, the pagination links do nothing, or page 2 returns a 404 error. Each one has a different cause, and most trace back to a custom query that does not know which page it is on.

This guide explains how to tell which problem you have and walks through eight fixes in the order I would check them.

Quick Answer

WordPress pagination not working is usually caused by a custom WP_Query that is missing the paged parameter, a plugin or theme using query_posts(), or pagination links that do not match the query. Check where the broken list is, add paged to custom queries, build links with paginate_links(), and resave your permalinks if page 2 gives a 404.

Why WordPress Pagination Not Working Happens

On normal blog, category and archive pages, WordPress handles pagination automatically, because its main query already knows the page number. The trouble starts when something builds its own list of posts, such as a theme template, a page builder widget or a shortcode that uses WP_Query. Unless that query is told which page to load, every “page” requests the same first set of posts.

Fix 1: Identify Where the Pagination Is Broken

With WordPress pagination not working, first confirm where it happens, because the fix depends on it.

  • Main blog or archive page: less common, and usually caused by a plugin or theme changing the main query incorrectly.
  • A post list built with a page builder: such as an Elementor Posts widget. This is a very common source.
  • A custom template or shortcode with its own query: common on custom or heavily edited themes.

Fix 2: Check Reading Settings and Fix a 404 on Page 2

WordPress pagination not working with a 404 on page 2 is usually a settings or rewrite problem, not a query problem.

  1. Go to Settings > Reading and check Blog pages show at most. If the number is larger than your total posts, there is no page 2 and a 404 is correct.
  2. Go to Settings > Permalinks and click Save Changes to rebuild the rewrite rules.
  3. For a custom post type archive, check that has_archive is on and that no code sets a different number of posts per page that conflicts with the main query.

If your permalinks are broken in general, see my guide on WordPress permalinks not working.

WordPress Pagination Not Working:

Fix 3: Replace query_posts() With pre_get_posts

If pagination is broken on your actual blog page or category archives, a plugin or theme function is probably using query_posts(). That function replaces the main query instead of modifying it, which breaks pagination. The correct, pagination-safe way to change which posts appear is the pre_get_posts hook:

function custom_query_modification( $query ) {
    if ( $query->is_main_query() && ! is_admin() ) {
        // your query changes go here
    }
}
add_action( 'pre_get_posts', 'custom_query_modification' );

Take a backup before editing theme code, and use a child theme.

Fix 4: Add the paged Parameter to a Custom WP_Query

This is the most common cause of WordPress pagination not working. A custom WP_Query must be told which page it is on, otherwise it always returns page 1.

$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 );

An important detail most guides skip: if this query runs on a static front page, WordPress uses the page query variable, not paged. Use get_query_var( 'page' ) there. Using the wrong one is a very common reason this fix seems not to work.

Fix 5: Build the Pagination Links From the Custom Query

WordPress pagination not working with correct posts but dead links usually means the links are built for the wrong query. The function the_posts_pagination() works with the main query only. For a custom query, build the links with paginate_links() and the custom query’s page count, and reset the post data afterwards:

<?php
$paged = get_query_var( 'paged' ) ? get_query_var( 'paged' ) : 1;

$custom_query = new WP_Query( array(
    'post_type'      => 'post',
    'posts_per_page' => 10,
    'paged'          => $paged,
) );

if ( $custom_query->have_posts() ) :
    while ( $custom_query->have_posts() ) : $custom_query->the_post();
        // output your post here
    endwhile;

    echo paginate_links( array(
        'total'   => $custom_query->max_num_pages,
        'current' => max( 1, $paged ),
    ) );

    wp_reset_postdata();
endif;
?>

Manually written “Page 2” links are another common hidden cause, because they never update with the query.

wordpress pagination are properly not working on website

Fix 6: Check Your Page Builder Widget

If the list is built with Elementor or another builder, its own settings control pagination, not your theme code.

  • In the Elementor Posts widget, open the Pagination section and make sure a pagination type is selected.
  • Make sure permalinks use “Post name” and not “Plain,” then resave them. Page numbers in the URL can fail with Plain permalinks.
  • Page builder lists on a static front page can behave differently, so test on a normal page as well to see whether the page type is the issue.
  • If you use an AJAX “load more” or infinite scroll plugin, check its own settings, because it replaces normal pagination.

Fix 7: Clear Your Cache

If you fixed the problem but pagination still looks broken, a cache may be serving an old copy of page 2. Clear your caching plugin’s full cache and your CDN cache, then test in an incognito window.

Fix 8: Rule Out a Plugin Conflict

Some SEO, performance and post-listing plugins can interfere with pagination URLs or query parameters. If the fixes above did not help:

  1. Deactivate plugins one at a time.
  2. Test pagination after each one.
  3. When it works, check that plugin’s settings for a pagination or query option.

A plugin that was installed or updated just before the problem began is the first one to test.

Quick Reference Table

If WordPress pagination not working still leaves you unsure where to start, match your symptom here.

Symptom Likely cause Fix
You are not sure where it breaks Main query, builder widget or custom template Fix 1
404 on page 2 Reading settings or rewrite rules Fix 2
Same posts on every page, main blog query_posts() breaking the main query Fix 3
Same posts on every page, custom list Custom WP_Query missing paged Fix 4
Right posts, but links do not work Links not built from the custom query Fix 5
Broken only in an Elementor list Widget or permalink settings Fix 6
Fixed in code, still shows old results Cache Fix 7
Started after installing a plugin Plugin conflict Fix 8
Broken only on the homepage Using paged instead of page on a static front page Fix 4

Frequently Asked Questions

Why does pagination work on my category pages but not my custom post list?

WordPress pagination not working only on a custom list is the classic sign of a custom query that is not told the current page number. The main query is handled automatically, but anything custom needs to be configured (Fixes 4 and 5).

Do I need coding knowledge to fix this?

Editing WP_Query parameters needs some PHP. If you use a page builder’s own posts widget, check the widget’s pagination settings first, because that often fixes it without any code.

Why does this happen more often on the homepage?

A homepage set as a static front page uses the page variable, not paged. That difference causes a lot of confusion (Fix 4).

Why do I get a 404 on page 2 of my blog?

Either you do not have enough posts for a second page, or your rewrite rules need to be rebuilt. Check your Reading settings and resave your permalinks (Fix 2).

Can a plugin update suddenly break pagination?

Yes. WordPress pagination not working right after an update can be caused by a plugin that changed how it queries posts. Test with it deactivated, and keep a backup so you can roll back.

Will fixing pagination help SEO?

Working pagination helps visitors and search engines reach your older posts. Broken pagination can leave older content hard to find.

Final Thoughts

WordPress pagination not working almost always comes from a custom query that does not know the current page, or from links built for the wrong query. Find where the list comes from, add paged to the query, build the links with paginate_links() and clear your cache.

Need Help Fixing Pagination?

If WordPress pagination not working is still a problem on your site, contact me here and I will fix it directly, or see my WordPress services.


About the author
Basharat Ali Khan is a WordPress developer in Gilgit, Pakistan with 8+ years of experience building custom plugins, Elementor sites and WooCommerce stores.
LinkedIn | WordPress.org profile

Related: WordPress Custom Fields Not Showing | WordPress Permalinks Not Working | WordPress Tags Not Working 

Leave a Reply

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