直接挂接到查询执行

时间:2017-04-06 作者:George Dimitriadis

我正在构建一个简单的缓存类,我想使用这个类来缓存查询。我最初的想法是创建一个Query 类并使用它来处理所有查询,这意味着Query 类将使用Cache 类来检查是否存在已保存的查询,否则它将运行WP_query$wpdb 并缓存结果。

到目前为止,一切都很好,我想更进一步。wordpress默认运行的查询是什么?Wordpress的核心函数不会使用我的类,所以我的问题是:有没有办法在查询执行级别连接到Wordpress?我能找到的唯一挂钩是关于修改查询的挂钩,但我想要的是一个处理查询执行本身的挂钩(这样我就可以停止查询执行并从缓存中检索查询将搜索的数据)。

例如,对于wordpress结构,我猜所有查询都会在$wpdb->query(\'FINAL BUILT QUERY HERE\');. 我不知道这是不是真的,但这是有道理的。因此,如果是这种情况,我将寻找一个操作过滤器,它以字符串或参数数组的形式接收最终查询,并期望查询结果作为返回(听起来像是一个不安全的钩子,但你明白了)。默认情况下,挂钩将运行$wpdb->query 在输入数据上,这就是我重写此行为并在实际执行之前为缓存查询检查添加绕道的原因。

我希望我的例子有助于理解我在寻找什么,有人知道怎么做吗?

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

在类WP\\u查询中,有一个钩子posts_pre_query 允许在DB调用之前设置查询结果

https://core.trac.wordpress.org/browser/tags/4.7.3/src/wp-includes/class-wp-query.php#L2755

相关推荐

使用WP_QUERY混合发布日期和发布元值

正在寻找使用自定义字段将旧帖子推送到WP\\u查询中的方法。例如,我今年有10篇文章,想将过去的2篇文章重新发布到自定义rss提要。因此,对于旧帖子,必须按照帖子日期和帖子元中的值对帖子进行排序:new post - (post date: 2018-11-11) new post - (post date: 2018-11-10) old post - (post date: 2017-05-01, post-meta date: 2018-11-09) new post - (