php - 带有 orderby meta_value_num 的 WordPress WP_Query Meta_key 无法正常工作
问题描述
我有以下 WP_Query(来自 var_dump 的输出):
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" }
它应该做的是抓取前 5 个查看的帖子。视图数据存储在 vw_post_views_all 元键中。我检查了数据库,一些具有较高值的帖子没有显示在显示的 5 中。我查看了其他 stackoverflow 帖子,有些人建议使用"meta_type" => "numeric"
,但我尝试了它并没有改变任何东西。
我注意到的一件事是元值作为长文本保存在数据库中,而不是数字。我们有一些非常古老的帖子,有几千次浏览。例如,一个帖子有 20985,但显示的是一个有 4700 视图的帖子。在我看来,查询没有按整数值正确排序,因为 4 确实高于 2,但 4700 不高于 20985。我不确定如何将所有这些元值转换为 int 值不过,数据库。
或者,查询根本没有检索帖子,因为它们已经有几年了?我们有很多帖子......这可能是 WP_Query 的问题吗?我尝试将 20k 值更新为 5k,但它仍然不起作用。
解决方案
我发现了问题!我安装的 Post Types Order 插件劫持了查询。停用插件后,查询按预期工作。
请注意,如果有人正在阅读并且有类似的问题,那么在撰写本文时,该插件提供了一个设置,该设置自动允许插件劫持整个站点上所有循环的查询。您可以禁用它,然后"orderby" => "menu_order"
在您希望此插件影响的查询中手动使用。不幸的是,这对我在这个特定的网站上不起作用,但我似乎记得过去在其他网站上使用过它。
推荐阅读
- pyspark - pyspark写csv没有额外的引号,空字符
- python - scrapy.Spider 子类,无法调用实例方法
- reactjs - React - 遍历数组中的文本并与旧值连接
- django - 如何将 Django 的 oAuth 后端与谷歌助手的 webhook 意图集成?
- c++ - MinGW 64 c 编译器中缺少 bin.gcc?
- r - 使用时间戳过滤而不过滤数据 R
- php - PHP 获取 mime 类型性能不佳
- asp.net - ERR_CONNECTION_REFUSED Asp.Net Core + Angular 10
- javascript - 如何使用jquery在div中仅显示n行段落?
- angular - 有没有办法检测多个角度分量的状态?