我有一个问题,我的帖子页面显示“找不到帖子”,而在它的正上方是“所有(1)|发布(1)”(这是一个新安装)。该帖子不仅在管理层中,而且在实时站点上也不可见。
我想这可能与我的数据库有关,该数据库是SQL Server使用的WP Db Abstraction. 因此,我安装了调试栏并找到以下查询:
SELECT TOP 0 * FROM wp_posts WHERE 1=1 AND wp_posts.post_type LIKE \'post\' AND (wp_posts.post_status = \'publish\' OR wp_posts.post_status LIKE \'future\' OR wp_posts.post_status LIKE \'draft\' OR wp_posts.post_status LIKE \'pending\' OR wp_posts.post_status LIKE \'private\') ORDER BY wp_posts.post_date DESC
WP_Posts_List_Table->prepare_items, wp_edit_posts_query, wp, WP->main, WP->query_posts, WP_Query->query, WP_Query->get_posts, pdo_wpdb->query, pdo_wpdb->_post_query
SELECT TOP 0
我觉得很可疑,你会怎么说?如果这确实是一个bug,有没有关于如何修复它的建议?
最合适的回答,由SO网友:edwardl 整理而成
问题不在于“选择前0名”,而在于幕后更改查询的方式。即使您将其更改为“选择*自…”,它会断裂的。
通过转到“wp includes\\query.php”文件,然后从查询中删除$limits变量,我成功地实现了这一点。这不是解决问题的最佳方法,但会使站点正常工作。看起来$限制打破了查询,SQL server的“行偏移量”与MySql不同。我不太了解它是如何工作的,但我成功地完成了安装。
在查询中。php文件。。。
查找此行:
$this->request=“从$wpdb中选择$found\\u rows$distinct$字段->posts$join WHERE 1=1$WHERE$groupby$orderby$limits”;
更改为:
$this->request=“从$wpdb中选择$found\\u rows$distinct$字段->posts$join WHERE 1=1$WHERE$groupby$orderby”;
此解决方案仅在您仍使用当前版本的WP时有效。