如果你想为WordPress的文章或其他内容实现滚动自动加载分页数据(又称无限滚动),有很多方法可以达到这一目的。以下是一个简单的实施方案:
最简单的方式是使用专门为此设计的插件。例如,Ajax Load More
和 WP Infinite Scroll Posts
是两个受欢迎的插件,可以帮助你实现此功能。
如果你不想使用插件,也可以手动实施这个功能。以下是一个基础的步骤:
首先,你需要在你的主题的 functions.php
文件中注册和排队你的JavaScript和CSS。
function enqueue_infinite_scroll_js() {
if( is_home() || is_archive() ) {
wp_enqueue_script('infinitescroll', get_template_directory_uri() . '/js/infinitescroll.js', array('jquery'), null, true );
}
}
add_action('wp_enqueue_scripts', 'enqueue_infinite_scroll_js');
在你的主题的 /js/
目录中创建一个 infinitescroll.js
文件。
jQuery(document).ready(function($) {
var canBeLoaded = true,
bottomOffset = 2000; // 剩余2000像素开始加载下一页
$(window).scroll(function() {
if( $(document).scrollTop() > ( $(document).height() bottomOffset ) && canBeLoaded == true ){
canBeLoaded = false;
var data = {
'action': 'loadmore'
};
$.post(ajaxurl, data, function(response) {
if(response != '') {
$('.posts').append(response);
canBeLoaded = true;
}
});
}
});
});
回到你的 functions.php
文件,然后添加以下代码:
function loadmore_ajax_handler(){
$args = array(
'posts_per_page' => 3, // 加载每次的帖子数量
'offset' => isset($_POST['offset']) ? $_POST['offset'] : 0, // 从哪里开始
'post_type' => 'post'
);
$query = new WP_Query( $args );
if( $query>have_posts() ) :
while( $query>have_posts() ): $query>the_post();
get_template_part( 'templateparts/post/content', get_post_format() );
endwhile;
endif;
die;
}
add_action('wp_ajax_loadmore', 'loadmore_ajax_handler'); // 如果是已登录用户
add_action('wp_ajax_nopriv_loadmore', 'loadmore_ajax_handler'); // 如果是访客
注意:这只是一个简化的例子,并不考虑所有可能的边界条件和错误处理。你可能需要根据你的具体情况进行调整。