Enabling infinite scrolling is as simple as adding this snippet to the theme’s functions.php file (where ‘content’ is the id
of the container that wraps the posts):
add_theme_support( 'infinite-scroll', array(
'type' => 'scroll',
'container' => 'content',
'footer' => false,
) );
But what should I do if my website has a multiple column layout where, for instance, one column shows the latest posts, and the other column lists the latest posts from a tag (highlights)? i.e. essentially there are two containers.
I tried these two snippets (see below), and either way, infinite scrolling is only enabled for one column/container.
add_theme_support( 'infinite-scroll', array(
'type' => 'scroll',
'container' => 'content',
'footer' => false,
) );
add_theme_support( 'infinite-scroll', array(
'type' => 'scroll',
'container' => 'highlights',
'footer' => false,
) );
and
add_theme_support( 'infinite-scroll', array(
'type' => 'click',
'container' => array( 'content', 'highlights' ),
'footer' => false,
) );
What am I doing wrong?
NOTE: If the fact that installing Jetpack requires a wordpress.com account is holding you back, please try Slim Jetpack. It even works on a local install of WP, and doesn’t require a wp.com account.
2 Answers
I’ve checked the source code for Slim Jetpack and this task can not be accomplished without rewriting that plugin.
Here are some hints:
-
You’ll have to duplicate line 539 of ‘/modules/infinity-scroll/infinity.php’ stating:
jQuery.extend( infiniteScroll.settings.scripts, <?php echo json_encode( $scripts ); ?> );
-
You’ll have to duplicate line 475 of ‘/modules/infinity-scroll/infinity.js’ as this initializes infinite scroll. (Do you see the variable name match?)
infiniteScroll.scroller = new Scroller( infiniteScroll.settings );
-
What’s more, you’ll have to tweak the module to accept more attributes, or at least
post_type
attribute to be able to determine what post_type to bring for each inifinite loop — this must be done in both JS and PHP (callback for ajax function).
As I’ve said, the plugin would have to be rewritten.