在页面模板中执行WP_QUERY分页时刷新$wp_Query有多安全

时间:2014-05-06 作者:Mayeenul Islam

通过大量的搜索和试用&;错误,我无法在自定义页面模板中进行分页。我其实并不累,但很沮丧,为什么最常见的错误问题没有得到解释,以便有人能够深入研究实际问题。在大多数问答中;A、 有一个包含大量代码的解决方案,它根本不是防弹的解决方案。有很多哲学,但没有真正深入研究解决方案。

最终我发现Chris\' solution 自定义Post类型的分页。我没有处理CPT,但解决方案对我有效。

其中,我的查询参数为:

$wp_query->query(\'posts_per_page=3&post_type=post&order=DESC&orderby=date&post_status=publish\'.\'&paged=\'.$paged);
除此之外,所有内容都如Chris所述。我的分页工作很好。

但我实际上关心一些问题:

首先,代码实际上在做什么

  • 我认为现在需要比默认解决方案更多的时间(性能问题)—这是真的吗$wp_query?
  • 1 个回复
    SO网友:cybmeta

    这个问题是基于意见的,所以答案也可以是基于意见的。我假设,如果您需要对帖子分页,那么您正在构建一个页面模板,使其看起来像一个归档页面。在这种情况下,我完全建议使用归档页面pre_get_posts 如有必要,可使用行动钩对立柱进行过滤。

    Why?

    挂钩pre_get_posts 操作允许您在执行主查询之前根据需要更改查询。

    如果让主查询保持原样,则由Wordpress执行以确定要显示的页面,然后在页面模板中创建第二个查询以显示所需内容。这就像让Wordpress构建所有流程,当内容要打印出来时,你会说:不!!返回并进行另一个查询,因为您拥有的不是我想要显示的!!(是的,还有更多的工作要做!!)

    二次查询和二次循环在很多情况下都是有用的,并且是必需的,例如在小部件中显示某个类别的最新帖子,但是如果二次查询/循环的结果将成为页面的主要内容,就不要使用它们。

    搞乱global $wp_query 在页面模板中可以得到你不想要的结果;此时global $wp_query 是对已执行查询的引用,其值可能会在脚本的其他部分中使用,因此使用它不安全。如果需要二次循环/查询,则必须始终使用new WP_Query 对象并调用wp_reset_postdata() 二次回路后;或使用get_posts() 作用最后,根据法典,在页面模板中pagination parameteres for a new WP_Query object 可能需要get_query_var(\'page\') 而不是get_query_var(\'paged\').

    结束

    相关推荐

    Show full posts in archive

    我有一个问题,我需要在我的归档页面中显示完整的帖子。E、 G.我有>两篇帖子,我想在归档页面中完整显示每一篇帖子。谢谢我该如何处理胡曼主题呢?这是档案的内容。php主题:<?php get_header(); ?> <section class=\"content\"> <?php get_template_part(\'inc/page-title\'); ?> <?php if(function