如何在挂钩到per_get_post或挂钩到parse_Query之间进行选择

时间:2021-06-25 作者:Meyer Auslander

在重构代码库时,我注意到有两个钩子用于修改主查询。

  • parse_query
  • pre_get_posts
来自Plugin API Reference 看起来这些钩子是背靠背的,它们都可以访问主要的WP\\u查询对象。我需要知道它们有什么不同,以便确定哪一个是适合我需要的。开发人员记录parse_querypre_get_posts 不要提供足够的信息来回答此问题。

使用的代码parse_query 基于an article on filtering admin listings based on a custom fields.

1 个回复
最合适的回答,由SO网友:Jacob Peattie 整理而成

我正在认真研究这两个钩子的代码,它们以相同的参数一个接一个地运行,我只是看不到任何有意义的区别。

仅理论上parse_query 将运行,而不是pre_get_posts, 如果WP_Query::parse_query() 我们将直接独立运行,但WordPress本身从来没有这样做过。也许有些插件会,但我不知道为什么会这样。就我所知,没有任何技术上的理由可以使用一个而不是另一个,但是pre_get_posts 官方和第三方提供的更新、更广泛的使用和更好的文档记录。我怀疑parse_query 有点退化。

我建议使用pre_get_posts. 使用您看到的任何代码parse_query 应按原样使用pre_get_posts.

相关推荐

wordpress hooks

我目前正在使用woocommerce主题,Hotel(https://woocommerce.com/products/hotel/).我最近刚刚创建了一个主页和一个博客页面,其解释方式如下:https://www.wpbeginner.com/wp-tutorials/how-to-create-a-separate-page-for-blog-posts-in-wordpress/现在我想做的是:创建一个带有固定元素的主页,这些元素永远不会改变(如照片),然后添加一些动态元素(如博客中的帖子)……假设