具有orderby meta_value_num的WordPress WP_Query Meta_key无法正常工作

时间:2018-12-12 17:40:45

标签: php wordpress

我有以下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,但仍然不起作用。

1 个答案:

答案 0 :(得分:0)

我发现了问题!我安装的Post Types Order插件正在劫持查询。停用插件后,查询将按预期工作。

请注意,如果有人正在阅读并且有类似的问题,那么在撰写本文时,该插件会提供一项设置,该设置会自动允许该插件在网站的所有循环中劫持查询。您可以禁用它,然后在希望此插件影响的查询中手动使用"orderby" => "menu_order"。不幸的是,这对于我在该特定站点上不起作用,但我似乎回想起过去在其他站点上成功使用过该站点。