通过大量的搜索和试用&;错误,我无法在自定义页面模板中进行分页。我其实并不累,但很沮丧,为什么最常见的错误问题没有得到解释,以便有人能够深入研究实际问题。在大多数问答中;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
?
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\')
.