WordPress 中实现文章列表的 AJAX 无刷新翻页功能
在WordPress中实现AJAX无刷新翻页功能,可以提升用户体验,避免页面重新加载。以下是实现步骤:
1. 准备工作
确保你的主题支持jQuery,因为大多数AJAX操作依赖它。
2. 修改主题文件
2.1 修改 index.php 或 archive.php
找到显示文章列表的模板文件(通常是 index.php 或 archive.php),在循环外部添加一个容器用于包裹文章列表。
复制
<div id="posts-container">
<?php if ( have_posts() ) : ?>
<?php while ( have_posts() ) : the_post(); ?>
<!-- 文章内容 -->
<div class="post">
<h2><?php the_title(); ?></h2>
<div><?php the_excerpt(); ?></div>
</div>
<?php endwhile; ?>
<?php endif; ?>
</div>
<!-- 分页链接 -->
<div id="pagination">
<?php next_posts_link('加载更多'); ?>
</div>
2.2 添加AJAX处理函数
在 functions.php 中添加AJAX处理函数。
复制
function load_more_posts() {
$paged = $_POST['page'] + 1;
$query = new WP_Query(array(
'post_type' => 'post',
'paged' => $paged
));
if ($query->have_posts()) :
while ($query->have_posts()) : $query->the_post();
?>
<div class="post">
<h2><?php the_title(); ?></h2>
<div><?php the_excerpt(); ?></div>
</div>
<?php
endwhile;
endif;
wp_die();
}
add_action('wp_ajax_load_more_posts', 'load_more_posts');
add_action('wp_ajax_nopriv_load_more_posts', 'load_more_posts');
3. 添加jQuery脚本
在主题的 js 文件夹中创建一个新的JavaScript文件(如 ajax-load-more.js),并添加以下代码:
复制
jQuery(document).ready(function($) {
var page = 1;
var loading = false;
$('#pagination a').click(function(e) {
e.preventDefault();
if (loading) return;
loading = true;
page++;
$.ajax({
url: '<?php echo admin_url('admin-ajax.php'); ?>',
type: 'POST',
data: {
action: 'load_more_posts',
page: page
},
success: function(response) {
$('#posts-container').append(response);
loading = false;
}
});
});
});
4. 加载脚本
在 functions.php 中加载刚刚创建的JavaScript文件。
复制
function enqueue_ajax_load_more_script() {
wp_enqueue_script('ajax-load-more', get_template_directory_uri() . '/js/ajax-load-more.js', array('jquery'), null, true);
}
add_action('wp_enqueue_scripts', 'enqueue_ajax_load_more_script');
5. 测试
保存所有文件并刷新页面,点击“加载更多”按钮,文章应通过AJAX加载而不刷新页面。
6. 优化
-
加载指示器:添加加载动画提升用户体验。
-
无更多文章处理:在无更多文章时隐藏“加载更多”按钮或显示提示信息。
通过这些步骤,你可以在WordPress中实现AJAX无刷新翻页功能。
仍然有问题? 我们要如何帮助您?

