Add Infinite Scroll to Your WordPress Theme Using Jetpack

Scroll Forever, Or Until There’s No More Posts

It’s no secret I’m a big fan of Jetpack. A single plugin adds so many options, not only for end users, but for we developers too! An excellent example would be infinite scroll.

Jetpack is a very popular plugin, so supporting Jetpack-specific features in your themes will end up just making your users happier. Kind of like an added bonus they didn’t realize they could use if they’re using your theme and Jetpack.

Infinite scroll is incredibly easy to add to “well-crafted” themes. The Twenty Twelve theme is a great example. Enabling infinite scroll is slightly more complicated with not-so-well-crafted themes, but it’s still pretty easy.

Enable Infinite Scroll in Well-Crafted Themes

Just add the following to your functions.php file.

add_theme_support( 'infinite-scroll', array(
    'container' => 'content',
    'footer' => 'page',
) );

Enable Infinite Scroll in Not-So-Well-Crafted Themes

Activate Infinite Scroll

Add the following to the functions.php file for your theme.

function mytheme_infinite_scroll_init() {
    add_theme_support( 'infinite-scroll', array(
        'container' => 'content',
        'render'    => 'mytheme_infinite_scroll_render',
        'footer'    => 'wrapper',
    ) );
add_action( 'init', 'rootdip_infinite_scroll_init' );

Setup Function for the Render Parameter

The render parameter specifies a function, in this case, mytheme_infinite_scroll_init. That function uses the WordPress loop to load additional posts to be shown for infinite scrolling.

To hook this all up, add the following to your functions.php file.

add_action( 'init', 'mytheme_infinite_scroll_init' );
function rootdip_infinite_scroll_render() {
    get_template_part( 'loop' );

In mytheme_infinite_scroll_init, the ‘loop’ parameter value defines the file where your wordpress loop sits. It should be very basic and only contain markup and PHP you want to be included with every post. Have a look at the loop.php file from Rootdip for an example.

That’s It

There’s more options that you can play with that are described on the Jetpack Infinite Scroll page, such as styling specifics and JavaScript events.

That’s really all there is to it. With the above code you’ll have a working Jetpack Infinite Scroll in your WordPress theme. Whether you’ve got a well-crafted theme or not, you should be able to add infinite scroll via Jetpack fairly easily.

I’d suggest adding an option to your theme options to allow users to enable or disable Infinite Scroll.


Well, now what?

Work with Me

I'm available for hire and always taking new clients, big and small. Got a project or an idea you'd like to discuss? Startup plan but no developer to make it happen? Just get in touch, I'd love to see if I can help you out!

Leave some Feedback

Got a question or some updated information releavant to this post? Please, leave a comment! The comments are a great way to get help, I read them all and reply to nearly every comment. Let's talk. πŸ˜€ is proudly hosted by DigitalOcean


10 thoughts on “Add Infinite Scroll to Your WordPress Theme Using Jetpack

  1. Hey tyler! thanks for this. I’m trying to get this to work with the Starkers theme – do I need to have the loop in its own separate .php file for this to work? Or can I keep the loop in index.php and take out the render and add_action? thanks!

    1. Should be able to just keep the loop in index.php and take out the rendering and add_action piece. Let me know if that doesn’t work though and I’ll assist more. πŸ™‚

      1. Thanks for the quick reply! Still no luck unfortunately. This is what I have in the functions.php:

        function starkers_infinite_scroll_init() {
        add_theme_support( ‘infinite-scroll’, array(
        ‘container’ => ‘content’,
        ‘footer’ => ‘wrapper’,
        ) );

        add_action( ‘init’, ‘starkers_infinite_scroll_init’ );

        Does that look right?

  2. I have my own theme, but I think I can make this work, I already added theme support for thumbnails, I changed the container to ‘blogContent’ but it still doesn’t just work, do I need to modify index.php, it seems I should have to…


Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.