分享各种网络资源
是我乃至整个互联网的精髓所在
 您目前所在位置: 站点首页 » WordPress » WordPress 代码 » 使用query_posts导致分页失效的解决方法
  • 使用query_posts导致分页失效的解决方法

  • 改变主循环(Alters Main Loop)
  • 二级循环(Secondary Loops)
  • 分页(Pagination)
  • 额外的SQL查询
  • 使用query_posts导致分页失效的解决方法-BanYuner

    最近这段时间在折腾影视页面,中途也是用到了query_posts来控制显示单分类下的文章数量,但是使用过程中出现了页面失效的情况,于是最后百度来自百度去还是没有找到相关文章,最终,我今天无意中已经找到了。

    代码部分来自TENNFY WU博客:

    <?php
    $limit = get_option('posts_per_page');
    $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
    query_posts('&showposts=' . $limit=9 . '&paged=' . $paged);
    $wp_query->is_archive = true; $wp_query->is_home = false;
    ?>
    

    其中$limit=9中的9就代表显示文章数量,而你需要修改的仅仅就是这个部分而已。

    使用了这个代码之后,基本所有问题都已经解决了,但是WP大学也说了,并不推荐用户使用query_posts方法来显示文章,至于原因方面如下:

    query_posts() 只是一种查询数据库获取文章列表的方法。在使用 query_posts() 之前,你需要了解它的弊端。

    改变主循环(Alters Main Loop)

    query_posts() 是通过替换查询条件来改变主循环生成的内容的。一旦你使用 query_posts(), 你文章的相关的全局变量和模板标签都将改变。条件标签(Conditional tags)在你调用 query_posts() 之后也会发生改变——这可能是也可能不是预期的结果。

    二级循环(Secondary Loops)

    要创建 二级列表(例如:在页面底部显示相关文章列表,或者在边栏小工具中显示一个列表), 尝试使用 WP_Query 或 get_posts() 来获取文章。

    如果你一定要用 query_posts() ,请确保你在上一个使用了 query_posts() 的循环结束的地方,使用 wp_reset_query() 来重置查询。

    分页(Pagination)

    分页将无法正常工作,除非你适当设置 ‘paged’ 查询: adding the paged parameter

    额外的SQL查询

    如果你在模板页面中使用 query_posts ,WordPress 就会在 query_posts 时执行数据库查询和检索记录(即它是如何知道是服务于哪个模板页面!)所以,当你使用 query_posts() 覆盖了默认的查询,你基本上就扔掉了默认的查询以及它的结果,并重新对数据库执行了另一个查询。

    这也许不是一个问题,尤其是如果你正在处理一个较小的基于博客的网站。但是对于大型网站、大型数据库以及较高的访客流量来说,你就要考虑使用其他查询方式来减少 SQL查询了,比如直接修改默认的查询(在它被请求前)。使用请求(request)过滤器可是实现这点。

    ‘parse_query’ 和 ‘pre_get_posts’ 过滤器也可用来修改内部用于生成SQL查询数据库的 $query 对象。

    所以在使用这个方法之前,请了解上述相关弊端之后再决定。

    关注我们 打赏 分享此文

    微信扫码,关注我们

    扫码,支持我

    使用query_posts导致分页失效的解决方法

    支付宝(点击图片切换)

    扫码,支持我

    使用query_posts导致分页失效的解决方法

    微信(点击图片切换)

    扫码,手机看

    使用query_posts导致分页失效的解决方法
    匿名

    个人评价:┃草根博主┃站点无技术含量┃文章内容不够吸引人┃转载内容随处可见┃资源均来自网络┃分享是我的宗旨,也是这个站点存在意义,分享的东西你现在可能不需要,但是我相信只要在某个时间你需要的时候能在这里找到,那么我就是成功的

    使用query_posts导致分页失效的解决方法
    1 + 7 =
    1. 1楼
      博客大全网
      最后评论时间:2017/07/25 08:25
      来自天朝的朋友 谷歌浏览器 Windows 7 山东省聊城市 职业技术学院
      感谢分享啊!
      博客大全网 2天前回复