我是WordPress新手,最近一直在学习很多关于pre_get_posts的知识。我理解这个基本概念,但是在文档的一部分中被绊倒了。你可以在主查询之外使用pre_get_posts吗?
从codex:
“同样,如果在模板文件(例如,archive.php)使用pre_get_posts将无法正常工作,因为查询完成后,他们被称为”
如果你不能在模板文件中使用它,这是否意味着它只对index.php有用?如果是这样的话,为什么pre_get_posts被用来改变存档显示方式的页面还有一个例子呢?
我明白pre_get_posts的功能(特别是query_posts),但我很难在一个站点上多次使用它。我看到的所有内容都显示它仅用于主循环。
任何指导,非常感谢。
非常感谢您的回复,我非常感谢。我唯一的后续问题是:如果pre_get_posts是为主查询而设的, – Travis
非常感谢您的回复,我非常感谢。在我看来,我在WP上开发的大部分内容都会有一个主要查询,然后几乎所有其他页面请求都会传递到模板文件,我可以像使用WP_Query()那样使用实例。有没有一种场景可以在同一个网站上多次使用pre_get_posts?再次感谢您的帮助,我试着加快响应速度,但我还没有足够的声誉来注册。 – Travis
这真的让我想到了,我想我需要咖啡......如果你想影响每一种页面请求的主要查询,你必须在你的'functions.php'文件中加入带有回调函数的'add_action',这实际上适用于例如'archive.php','category.php'和所有的子模板文件,如'category-category-a.php'。你可以在'functions.php'中创建不同的回调函数,就像'is_category()',然后'add_action('pre_get_posts','my_category_callback_function')',但不止一次调用它是多余的,因为它只影响一个查询,主要查询。 – Joachim