我有个习惯WP_Users_Query
我在一个网站上使用的。
一段时间以来,它一直运行良好。我使用number
参数as per the docs here. 但出于某种原因,当我添加该参数时,我会得到一个SQL错误,除非我将其设置为-1
在那里它可以归还一切。
以下是我的代码:
$user_fields = array( \'ID\', \'display_name\', \'user_email\' );
$args = array(
\'role__in\' => array(\'Subcriber\', \'Editor\'),
\'meta_query\' => array(
array(
\'key\' => \'list_in_directory\',
\'value\' => 1,
\'compare\' => \'=\'
)
),
\'fields\' => $user_fields,
\'paged\' => get_query_var(\'paged\')
); // End Args
if ($args){
$user_query = new WP_User_Query( $args );
}
如果我添加该行:
\'number\' => \'2\'
对于我的args数组(我尝试将其作为字符串和整数,两者的结果都相同),我在日志中得到以下错误:
WordPress数据库错误您的SQL语法有错误;查看与MySQL服务器版本对应的手册,以了解在第15行中使用“-2,2”附近进行查询的正确语法SELECT SQL_CALC_FOUND_ROWS wp_users.ID,wp_users.display_name,wp_users.user_email FROM wp_users INNER JOIN wp_usermeta ON ( wp_users.ID = wp_usermeta.user_id ) INNER JOIN wp_usermeta AS mt1 ON ( wp_users.ID = mt1.user_id ) WHERE 1=1 AND (
(
(
( wp_usermeta.meta_key = \'list_in_directory\' AND wp_usermeta.meta_value = \'1\' )
)
AND
(
(
( mt1.meta_key = \'wp_capabilities\' AND mt1.meta_value LIKE \'%\\"Subcriber\\"%\' )
OR
( mt1.meta_key = \'wp_capabilities\' AND mt1.meta_value LIKE \'%\\"Editor\\"%\' )
)
)
)
) ORDER BY user_login ASC LIMIT -2, 2 made by require(\'wp-blog-header.php\'), require_once(\'wp-includes/template-loader.php\'), include(\'/themes/pand/page-templates/membership-directory.php\'), WP_User_Query->__construct, WP_User_Query->query
此外,我还尝试用不同的数字代替2,结果都是一样的。唯一一次我没有得到错误是如果我将它设置为-1。然后它工作得很好(但没有分页)。
我对这件事感到抓狂,所以任何帮助都将不胜感激!
SO网友:Dustin Yoxall
好吧,我知道我的问题是什么了。问题在于paged
论点我想这是因为我在检查它,但如果没有发现,它会导致问题。这是我现在使用的代码。
$user_fields = array( \'ID\', \'display_name\', \'user_email\' );
$paged = ( get_query_var(\'paged\') ) ? get_query_var(\'paged\') : 1;
$args = array(
\'number\' => \'1\',
\'role__in\' => array(\'Subcriber\', \'Editor\'),
\'meta_query\' => array(
array(
\'key\' => \'list_in_directory\',
\'value\' => 1,
\'compare\' => \'=\'
),
),
\'fields\' => $user_fields,
\'paged\' => $paged
); //End Args
if ($args){
$user_query = new WP_User_Query( $args );
}
您会注意到,在第二行,我正在检查
paged
查询var,如果找不到,则将其设置为1。这似乎修复了SQL错误。