当前位置:K88软件开发文章中心编程全书编程全书02 → 文章内容

WordPress ajax分页滚动无限加载

减小字体 增大字体 作者:佚名  来源:网上搜集  发布时间:2019-1-4 9:20:35

-->

一.加载 jQuery 库
既然是 jQuery 驱动的 Ajax ,加载 jQuery 库是必须的。
二.文章列表格式
在你的文章列表页面(首页 index.php、归档 archive.php )需要确保有以下类似的结构

<!-- 包含所有文章的容器 --><div id="content"> <!-- 各文章的容器 --> <div class="post"></div> <div class="post"></div> <div class="post"></div> <div class="post"></div> <div class="post"></div></div>

三.加入默认导航
因为 Ajax 分页每次获取的是下一页的内容,因此只需调用 WordPress 的默认导航。在你的 index.php (或是其他文章列表页面)加入以下代码,生成默认的 WordPress 导航。

<div id="pagination"><?php next_posts_link(__('LOAD MORE')); ?></div>

四.Ajax 获取下一页
在你的主题 js 文件里加入以下代码

// 使用 live() 使 js 对通过 Ajax 获得的新内容仍有效 $("#pagination a").live("click", function(){ $(this).addClass("loading").text("LOADING..."); $.ajax({ type: "POST", url: $(this).attr("href") + "#content", success: function(data){ result = $(data).find("#content .post"); nextHref = $(data).find("#pagination a").attr("href"); // 渐显新内容 $("#content").append(result.fadeIn(300)); $("#pagination a").removeClass("loading").text("LOAD MORE"); if ( nextHref != undefined ) { $("#pagination a").attr("href", nextHref); } else { // 若没有链接,即为最后一页,则移除导航 $("#pagination").remove(); } } }); return false; });

五.滚动触发翻页
如果想当鼠标滚动到接近页面底部时自动翻页,则可以把代码改成下面的样式

// 给浏览器窗口绑定 scroll 事件$(window).bind("scroll",function(){// 判断窗口的滚动条是否接近页面底部if( $(document).scrollTop() + $(window).height() > $(document).height() - 10 ) { $(this).addClass('loading').text('LOADING...'); $.ajax({ type: "POST", url: $(this).attr("href") + "#content", success: function(data){ result = $(data).find("#content .post"); nextHref = $(data).find("#pagination a").attr("href"); // 渐显新内容 $("#content").append(result.fadeIn(300)); $("#pagination a").removeClass("loading").text("LOAD MORE"); if ( nextHref != undefined ) { $("#pagination a").attr("href", nextHref); } else { // 若没有链接,即为最后一页,则移除导航 $("#pagination").remove(); } } });}});

六.添加导航 css
为导航添加一段 css 美化一下,另外还可以准备一张 gif 图来表示正在加载,下面是 Melody 的样式:

#pagination {padding: 20px 0 0 30px; }#pagination .nextpostslink {width: 600px; color: #333; text-decoration: none; display: block; padding: 9px 0; text-align: center; font-size: 14px; }#pagination .nextpostslink:hover {background-color: #cccccc; text-decoration: none; border-radius: 5px; -moz-border-radius: 5px; -webkit-border-radius: 5px; }#pagination .loading {background: url("images/loading.gif") 240px 9px no-repeat; color: #555; }#pagination .loading:hover {background-color: transparent; cursor: default; }

WordPress ajax分页滚动无限加载