解决WordPress自定义页面分页问题

 2017年08月11日 10:07  6,839  15  打印本文  

Wordpress页面分页功能有很多,插件也有很多,但是自定义页面的分页会让很多Wordpress使用者感到苦恼,因为一些自定义页面函数使用问题。网络上自定义输出文章的代码都是只考虑了功能的实现,却没有为其它功能的兼容性考虑。博客首页的分页代码完全没有用,点来点去都是第一页。

跟着网络上的思路试来试去,终于解决了,现在把方法教给大家,不止是代码,搜索了一番,网络上也有少量类似的结果,但是他们都是针对自己的主题直接给出代码,如果不是用他们主题的人是用不了的。

传统的自定义页面输出文章的代码是:

  1. <?php query_posts();if (have_posts()) : while (have_posts()) : the_post(); ?>

这正是造成自定义页面无法分页的关键因素,如果要实现分页,这段代码是有bug的,所以我们应该替换成:

  1. <?php $limit = get_option('posts_per_page');$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
  2. query_posts();if (have_posts()) : while (have_posts()) : the_post(); ?>

按照这种输出格式就能完美解决自定义页面分页功能了,但实际的自定义页面是有参数设置的,比如:

  1. <?php query_posts("post_type=shuoshuo&post_status=publish&posts_per_page=100");if (have_posts()) : while (have_posts()) : the_post(); ?>

正确的分页代码是:

  1. <?php $limit = get_option('posts_per_page');$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
  2. query_posts('post_type=shuoshuo&post_status=publish&showposts=' . $limit=10 . '&paged=' . $paged);if (have_posts()) : while (have_posts()) : the_post(); ?>

看了这个例子大家应该知道怎么做了。

到此为止并没有结束,自定义页面要分页肯定要分页代码函数啊,所以要在自定义页面中调用分页函数,如果不知道自己主题的分页函数是什么,可以到博客首页文件里查看。形同<?php pagination($query_string); ?>,如果你的主题也是这个分页函数,那就百分之百能成功,因为不同的分页函数调用情况可能不同,如果你直接写<?php pagination($query_string); ?>是调不出来的,需要修改成<?php pagination($query); ?>,这样才能把分页调出来。

注:这种方法实质是调用了博客首页的分页链接,是有效的,但是如果首页有9页的话,而你自定义页面有8页的话,那么自定义页面第9页会显示空白,这是一个小bug,如果不在乎的话可以忽略,另外如果看不惯这个bug的话,还有一种调用方法,就是用wp的内置函数上一页下一页两个按钮调用,代码如下:

  1. <?php if (function_exists('wp_pagenavi')) wp_pagenavi();else { ?><div><?php previous_posts_link('【« 上一页】') ?><?php next_posts_link('【下一页 »】') ?></div><?php } ?>

这个方法不会出现空白页,但是没有翻页数字,请自行决定使用哪个方法。

weinxin
小算草微信公众号
扫一扫关注小算草微信公众号,打开微信简简单单即可查看小算草所有内容,更快捷更方便。
Mr Y

吐槽一下

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

    • avatar 懿古今 来自天朝的朋友 谷歌浏览器 Windows 7 广西南宁市 电信 【进士】

      这个问题,如果熟悉自己使用的主题,修改起来还是没有难度的

      • avatar Koolight 来自天朝的朋友 谷歌浏览器 Windows 7 湖北省荆州市 联通 【进士】

        这个应该是添加分页功能了!

          • avatar 九哥 站长 来自天朝的朋友 谷歌浏览器 Windows Server 2003

            @Koolight 对的,如果文章太长还是添加分页好点。

          • avatar Koolight 来自天朝的朋友 Safari浏览器  Android 6.0 PE-CL00 Build/HuaweiPE-CL00 湖北省武汉市 电信 【进士】

            长城宽带打不开博主网页啊,我之前也遇到过,后来又自动好了。

              • avatar 九哥 站长 来自天朝的朋友 QQ浏览器 Windows 7

                @Koolight 我服务器不行,偶尔挂,一般过会就能好。

              • avatar 懿古今 来自天朝的朋友 谷歌浏览器 Windows 7 广西南宁市西乡塘区 电信 【进士】

                本站就有很多自定义页面带有分页按钮的,比如博客目录、博客问答、博客资讯等栏目都是页面

                  • avatar 九哥 站长 来自天朝的朋友 QQ浏览器 Windows 7

                    @懿古今 你是大神,我自定义页面少,就用了一个。

                  • avatar 福利堆 来自天朝的朋友 谷歌浏览器 Windows 10 四川省自贡市 电信 【书童】

                    这个功能不错 呵呵 我喜欢fulidui-com

                    • avatar 管家婆 来自天朝的朋友 谷歌浏览器 Windows 10 北京市东城区 联通 【小白】

                      WordPress还是很好用的 尤其是 插件

                        • avatar 九哥 站长 来自天朝的朋友 QQ浏览器 Windows 7

                          @管家婆 是,但插件还是尽量少用点,影响速度,纯代码好。