首页 » 开源/框架 » WordPress » 正文

非插件为WordPress实现分页Ajax无限加载功能

今天在Github上找东西的时候发现了一个叫做 Infinite AJAX Scroll 的项目,看到它通过很简单的设置,就可以让Wordpress支持分页Ajax无线加载功能。测试了下非常好用,现在分享给大家~

下面以Wordpress自带主题 Twenty Twelve 主题为例:

1) 下载 jquery-ias.min.js

2) 把 jquery-ias.min.js 拷贝到 wp-content/themes/twentytwelve/js 文件夹下。

3) 在编辑器中打开 wp-content/themes/twentytwelve/header.php。

4) 为主题添加 jQuery。把下面的代码粘贴到 </head> 之前(如果主题已引入jQuery,可跳过此步):

<script type="text/javascript" src="http://libs.baidu.com/jquery/1.11.1/jquery.js"></script>

5) 把下面的代码放在上一步引入的 jQuery 之后, </head> 之前:

<script src="<?php echo get_template_directory_uri(); ?>/js/jquery-ias.min.js" type="text/javascript"></script>

6) 最后,把下面的代码贴在 </head> 之前(有些属性需要改为你主题中的):

<script type="text/javascript">
var ias = $.ias({
    container: "#content", //包含所有文章的元素
    item: ".post", //文章元素
    pagination: ".navigation", //分页元素
    next: ".nav-previous a", //下一页元素
});

ias.extension(new IASTriggerExtension({
    text: 'Load more items', //此选项为需要点击时的文字
    offset: 2, //设置此项后,到 offset+1 页之后需要手动点击才能加载,取消此项则一直为无限加载
}));
ias.extension(new IASSpinnerExtension());
ias.extension(new IASNoneLeftExtension({
    text: 'You reached the end.', // 加载完成时的提示
}));
</script>

如果主题启用了Lazyload插件,在第二页开始之后的页面图片会加载不出来,需要加入下面的代码才行:

ias.on('rendered', function(items) {
    $("img.lazy").lazyload({effect:"fadeIn"}); //这里是你调用Lazyload的代码
})

Done!

效果测试

本文共 53 个回复

  • 偏方网 2015/01/19 16:43

    现在很多网站都在搞这个功能,也算蛮好的。

  • daixiy 2015/01/19 18:02

    看了一下效果,感觉有好也有不好的。比如打开一篇文章看后,再点后退,则页面显示不会停留在刚才打开过的文章附近,不知道看到哪里了。又要滚动鼠标上下寻找刚才看过了的文章的位置。这功能新的主题中是默认添加了吗。如果添加了,建议有开关可以选择是否使用。

    • Specs 2015/01/19 18:49

      @ daixiy 没添加,至于你说的那个不好的,所有用到Ajax都会有这个问题。

  • 梦想网络 2015/01/19 20:29

    请问博主把不显示图片的问题修复了吗?

    • Specs 2015/01/19 21:14

      @ 梦想网络 只能先取消了Lazyload了,去了影响也不大,毕竟我的图片很少~

      • 梦想网络 2015/01/19 22:28

        @ Specs 哎,百度了一大堆,都没提到这个问题。

      • 梦想网络 2015/01/20 14:34

        @ Specs 我已经把这个问题解决了,。。。哈哈

  • 灰常记忆 2015/01/20 15:22

    感觉无限加载不好

  • 小二苘 2015/01/20 19:30

    今天尝试了各种Ajax评论分页,各种失败,郁闷死了

    • Specs 2015/01/21 09:23

      @ 小二苘 我这个用到评论分页那里应该也可以的,只是效果是下拉而不是换页 :wink:

      • 小二苘 2015/01/21 09:34

        @ Specs 我不太喜欢无限加载的

        • Specs 2015/01/21 09:38

          @ 小二苘 我的那个分页也是从别的主题弄过来的,在single.js最下面,你复制过去试下~ :smile:

          • 小二苘 2015/01/21 09:41

            @ Specs 好的,我研究研究

  • frank 2015/01/22 11:24

    非常有帮助,学习中 !!! :?:

  • JV 2015/01/22 18:57

    这个js有两个个function(b, c)函数变量,把延迟加载的执行函数丢到第一个function(b, c)最后执行一遍就行了。我以前用的图片延迟加载函数是 img_lazyload(); 不知道现在有没有变。

    • Specs 2015/01/22 19:14

      @ JV 我下载的这个最新版本的里面已经没有那个回调函数了 :cry:

      • JV 2015/01/22 19:28

        @ Specs 我是从你上面的地址下载的啊。里面有这个函数。

        • Specs 2015/01/23 08:19

          @ JV 我再找找~~

          • JV 2015/01/23 16:05

            @ Specs 还有一个小问题:贵站回复评论上,鼠标移到@xxx上会显示被@的评论信息,但如果评论ajax翻页之后就不起作用了。这个和上面的问题类似。

            • Specs 2015/01/23 16:08

              @ JV 嗯,这个问题我知道,但是我在翻页那里加上那个tooltip的代码了,还是不管用 :eek:

  • 威客圈子 2015/03/09 16:37

    博主的博客很不错,不知道能不能交换友链呢?如果博主有意向的话,可以加我的QQ293459572详谈

  • 半步多 2015/04/13 16:04

    实现不了啊, container: "#content", //包含所有文章的元素 item: ".post", //文章元素 pagination: ".navigation", //分页元素 next: ".nav-previous a", //下一页元素用的你现在的主题,这部分该怎么修改啊! :cry:

  • Lyc 2015/06/26 17:21

    博主最后一步的属性要怎么调啊?

    • Specs 2015/06/26 20:35

      @ Lyc 最后一步你是值说lazyload?直接跟在上面的代码后面就行了

12

发表评论