The Tool Desk
Outbyte PC Repair FREEClear out junk files and repair common Windows errorsFree Scan →Outbyte Driver Updater FREEFix the driver behind crashes, sound loss and screen glitchesFind Drivers →The right method depends on your theme. Jetpack Infinite Scroll is the quickest low-code option for a compatible classic theme. Jetpack’s developer documentation says it is not supported for block themes, so a block-theme site should use a maintained alternative, the REST API, or a custom theme implementation instead. Whichever route you choose, keep ordinary paginated URLs available so people and search engines can still reach every page of posts.
Choose an implementation path first
| Approach | Best fit | Control | Main limitation |
|---|---|---|---|
| Jetpack Infinite Scroll | Classic themes with the required integration | Low-code; automatic scrolling or click-to-load | Theme-dependent and unsupported for block themes |
| WordPress REST API | Custom JavaScript or headless-style listings | Batch size, markup and loading behavior | Requires front-end code and accessibility testing |
| WP_Query in a theme | Custom archive or template development | Full server-rendered control | Requires PHP/theme work and pagination logic |
| Query Loop pagination | Block-editor listings where pagination is acceptable | Native block-editor configuration | Provides pagination, not infinite scroll |
Jetpack is simplest when your classic theme already supports its required content container and templates. Custom API or query-loop work is more adaptable, but it needs site-specific testing.
Option 1: Enable Jetpack Infinite Scroll on a classic theme
Confirm theme compatibility
Check that the site uses a classic theme rather than a block theme. Jetpack’s developer guide states: “Note that Jetpack Infinite Scroll is not supported for block themes.” Review the theme’s archive markup as well: Jetpack must have a valid container in which to append new posts and a rendering arrangement that matches the theme templates. See the Jetpack Infinite Scroll theme-support guide.
Turn on the feature
- Open the Jetpack dashboard for the site.
- Find the Infinite Scroll setting and enable it.
- Visit the blog or archive page in a logged-out browser and test loading several batches.
Jetpack documents two modes: automatic scroll and a user-activated click mode. Automatic scroll ordinarily loads seven posts per activation. Click mode uses the site’s “Blog pages show at most” value unless the theme supplies a posts_per_page override. Those are documented defaults, not a promise that every theme configuration will behave identically. Product details are described on Jetpack’s Infinite Scroll page.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
#1 Best Overall
Declare support when developing the theme
A theme author can register support and identify the listing container with add_theme_support(). A minimal pattern is:
add_theme_support( 'infinite-scroll', array(
'container' => 'posts-container',
'footer' => 'site-footer',
'render' => 'my_theme_render_posts',
'type' => 'scroll',
) );
The exact container ID, rendering callback and footer selector must match your theme’s HTML. Jetpack’s guide documents the container, render, footer and type arguments; do not paste the example unchanged into a theme with different markup.
Rank #2
Choose automatic loading or a button
- Scroll: convenient for continuous archives, but it can push footer widgets farther away as more posts load.
- Click: a “load more” action gives readers control and makes footer access more predictable.
If your theme has footer widgets, Jetpack specifically documents switching to click-to-load so visitors can reach that footer content. Test keyboard operation, focus movement, screen-reader announcements, loading errors and the footer on the real site; compatibility is not proof that every configuration is accessible.
Option 2: Build infinite scroll with the WordPress REST API
The REST API is a good choice when you need custom markup or a block-theme-compatible front end. The posts collection accepts page, per_page and offset. per_page is capped at 100, and responses include X-WP-Total and X-WP-TotalPages headers. Use a modest batch rather than requesting an entire archive at once. See the WordPress REST API pagination documentation.
Rank #3
Implement the loading loop
- Render the first page of posts normally, with a real paginated URL such as
/blog/page/1/or the site’s existing archive URL. - Store the next page number and request an endpoint such as
/wp-json/wp/v2/posts?page=2&per_page=10. - Read the returned post data and render each item using the same title, date, author, image and excerpt structure as the initial server-rendered list.
- Append the new elements to the listing container, not to an unrelated wrapper.
- Stop when the request reaches the value in
X-WP-TotalPages, or when the API returns a no-more-pages response. - Keep a visible “Load more” button as a fallback if automatic loading fails, and expose loading and error states to assistive technology.
Do not make JavaScript loading the only way to reach older posts. Each batch should correspond to a stable URL that can be opened directly and should contain the same content whenever it is requested.
Option 3: Use WP_Query in a custom theme loop
For a PHP-rendered archive, use WP_Query with posts_per_page and paged. The WP_Query reference documents these query arguments and the pagination data available to the loop.
Basic query pattern
$paged = max( 1, get_query_var( 'paged' ) );
$query = new WP_Query( array(
'post_type' => 'post',
'posts_per_page' => 10,
'paged' => $paged,
) );
Render the query’s posts with the site’s normal template markup, then provide a link to the next page. A JavaScript layer can intercept that link, fetch the next URL, append its posts and update the browser history. If this is a static front-page template, WordPress documents a caveat: the page number may be available through get_query_var( 'page' ) rather than paged. Verify the behavior in the actual template before deploying.
Keep infinite scroll crawlable
Google Search Central advises against depending on scrolling or clicking as the sole mechanism for exposing content. Give every chunk a persistent, unique URL, keep each URL’s content stable, and link sequentially between pages so crawlers can discover later entries. Infinite scroll is an enhancement to ordinary pagination, not a replacement for it. Follow Google’s guidance on lazy-loaded content; its older 2014 infinite-scroll article is marked potentially outdated.
Do these 3 things before closing this tab:
1Scan for outdated or missing drivers - takes under a minute2Clear out junk files and repair common Windows errors3Fix the driver behind crashes, sound loss and screen glitchesBest Value
A practical URL arrangement
- Retain the normal archive links, such as the site’s existing page-2 URL format.
- Ensure page 2 contains the same second batch whether reached by a link, direct request or JavaScript enhancement.
- Use ordinary anchor links in the document or a crawlable fallback so later pages are discoverable without executing your loader.
- Do not create a different, unstable URL for every scroll position.
Testing checklist before launch
- Confirm the first page works with JavaScript disabled.
- Load multiple batches on desktop and mobile, including a slow connection.
- Check that duplicate posts do not appear when a request is retried.
- Verify the end-of-archive state and network-error recovery.
- Operate the loader with a keyboard and check focus, announcements and contrast.
- Make sure footer links and widgets remain reachable, especially with automatic scroll.
- Open each paginated URL directly and confirm it shows the intended stable batch.
- Inspect the page source or rendered HTML to ensure sequential links remain available to crawlers.
Which method should you use?
Use Jetpack when you have a compatible classic theme and want the least code. Choose the REST API when a custom front end needs precise control over batches and markup. Choose WP_Query when the archive belongs in a custom PHP template. On a block theme, do not plan around Jetpack’s documented integration; use a maintained custom solution or keep the native Query Loop’s pagination instead. In every case, preserve stable, sequential pagination and test the complete interaction on your own theme.
Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.




