我有以下WP_Query(从var_dump输出):
b-a
它应该做的是抓住观看次数排名前5的帖子。视图数据存储在vw_post_views_all元密钥中。我检查了数据库,在显示的5个中没有显示一些具有较高值的帖子。我查看了其他stackoverflow帖子,有人建议使用array(7) { ["post_type"]=> string(4) "post" ["ignore_sticky_posts"]=> bool(false) ["posts_per_page"]=> int(5) ["orderby"]=> string(14) "meta_value_num" ["order"]=> string(4) "DESC" ["meta_type"]=> string(7) "NUMERIC" ["meta_key"]=> string(17) "vw_post_views_all" }
,但是我尝试了一下,但它没有任何改变。
我注意到的一件事是元值被保存为DB中的长文本,而不是数字。我们有一些非常老的帖子,有数千个视图。例如,一个帖子有20985个,但是正在显示一个具有4700个视图的帖子。在我看来,该查询未按整数值正确排序,因为4确实高于2,但4700不高于20985。我不确定如何将所有这些元值转换为int值。 DB,但是。
或者,也许查询只是没有检索帖子,因为它们已有几年历史了?我们有很多帖子... WP_Query可能有问题吗?我尝试将20k值更新为5k,但仍然不起作用。
答案 0 :(得分:0)
我发现了问题!我安装的Post Types Order插件正在劫持查询。停用插件后,查询将按预期工作。
请注意,如果有人正在阅读并且有类似的问题,那么在撰写本文时,该插件会提供一项设置,该设置会自动允许该插件在网站的所有循环中劫持查询。您可以禁用它,然后在希望此插件影响的查询中手动使用"orderby" => "menu_order"
。不幸的是,这对于我在该特定站点上不起作用,但我似乎回想起过去在其他站点上成功使用过该站点。