在主查询中禁用MySQL查询

时间:2013-05-04 作者:Guillochon

我想禁用主查询的MySQL部分,也就是说,除了步骤4.3外,我希望此页面上的每个步骤都要遵循:http://codex.wordpress.org/Query_Overview

做这件事最简单的方法是什么?

2 个回复
SO网友:Leonardo Prado

检查此解决方案是否适用于您的案例:

add_filter(\'posts_request\', \'supress_main_query\', 10, 2);
function supress_main_query( $request, $query ){
    if( $query->is_main_query() && ! $query->is_admin )
        return false;
    else
        return $request;
}
posts_request 是运行查询之前调用的最后一个筛选器,并将$request具有生成的SQL字符串和$query, 使用用于生成查询的WP\\U查询对象。

这样,您可以检查这是否是主查询,并返回false以不运行生成的查询。

SO网友:Rarst

通常很难完全抛弃WP在堆芯加载过程中坚持要做的事情。然而,以较小的方式和充分的结果处理它们相对容易。

查询有很多筛选器,即posts_where (带is_main_query() 检查以确保我们只是在修改它)允许我们更改WHERE SQL查询的一部分。

但是我们应该向它添加什么来摆脱它呢?通常使用以下条件AND 1=0. 因为它显然不令人满意,所以它有效地缩短了SQL查询的时间,使其没有结果。

结束