Transient pagination not working properly

Short answer: You are making the same query no matter what page you are, but you’re expecting a different result.

Long answer: The query should be different for second page, having paged=2, so your query (and transients) with pagination should look like this:

$paged_var = get_query_var( 'paged' ) ? get_query_var( 'paged' ) : 1;

if ( get_transient( 'category_one_posts-' . $paged_var ) == false ) {
    $posts_inside = new WP_Query(
        array(
             'cat' => 1,
             'paged' => $paged_var
        )
    );
    set_transient( 'category_one_posts-' . $paged_var, $posts_inside, 60*60*1 );
} else {
    $posts_inside = get_transient( 'category_one_posts-' . $paged_var );
}

if ( $posts_inside->have_posts() ) {
    while( $posts_inside->have_posts() ) {
        $posts_inside->the_post();
        // Display posts.
    }

    echo get_next_posts_link( __( 'Next', 'textdomain'), $posts_inside->max_num_pages );
    echo get_previous_posts_link( __( 'Previous', 'textdomain'), $posts_inside->max_num_pages );
}

Leave a Comment