在WP_Query上设置SQL_BIG_SELECTS和MAX_JOIN_SIZE

时间:2018-04-23 作者:Aus-tn

尽管使用;

$mysqli = new mysqli("localhost", "user", "pass", "db"); 
$mysqli->query(\'SET SQL_BIG_SELECTS = 1\');
$mysqli->query(\'SET MAX_JOIN_SIZE = 999\');

$the_query = new WP_Query( $args ); 
我正在接收;

[2018年4月23日14:37:31 UTC]WordPress数据库错误SELECT将检查超过MAX\\u JOIN\\u SIZE的行;检查您的WHERE并使用SET SQL\\u BIG\\u SELECTS=1或SET MAX\\u JOIN\\u SIZE=#如果选择适合查询。。。WP\\u Query->\\u construct,WP\\u Query->Query,WP\\u Query->get\\u posts

最初的查询可以工作,但当我添加了另一个超出上限的元查询时,尽管在我注释另一个元查询时,该查询仍然可以工作,但它停止了。

如何将$mysqli查询设置应用于$the\\u查询?

3 个回复
最合适的回答,由SO网友:Clemens Tolboom 整理而成

根据WP_Query hit max joins... How else can I build a search function that uses custom fields? 您应该使用

$wpdb->query(\'SET OPTION SQL_BIG_SELECTS = 1\');
这在为当前连接设置时很有意义。通过创建单独的连接new mysqli WordPress还有一个$wpdb.

SO网友:Aus-tn

由于主机上的限制,$wpdb->查询行被忽略。我有一个通过BlueHost的VPS,支持人员通知我,他们将不遵守任何调整这些值的请求。由于用户限制,我也无法通过phpMyAdmin设置这些配置(尽管以root身份登录)

SO网友:MirzaP

对于仍在寻找答案的任何人,可以通过向函数中添加以下代码,将所有查询的SQL\\u BIG\\u SELECTS设置为1。php文件:

function enable_big_selects_for_queries() {
    global $wpdb;
    $wpdb->query( \'SET SQL_BIG_SELECTS=1\' );
}
add_action( \'init\', \'enable_big_selects_for_queries\' );

结束

相关推荐

是否对多个帖子类型执行REST_POST_QUERY?

如何让rest\\u post\\u查询过滤器跨多个帖子类型工作?我想修改所有帖子类型的orderby,但目前我必须在过滤器名称中指定“post”,这意味着它对我创建的自定义帖子类型不起作用?add_filter(\"rest_post_query\", function ($args) { $args[\"orderby\"] = \"menu_order\"; $args[\"order\"] = \"ASC\"; return $a