我在 wordpress 中使用自定义字段来存储元值。一些自定义字段有多个值。我正在使用“get post meta”检索数组,该数组返回一个数组,正如预期的那样。但似乎不同的项目是在没有任何逻辑的情况下订购的。有些按照输入的顺序出现,有些则以相反的顺序出现,有些完全混乱..我会错过什么?
我无法再更改项目的存储方式。数据库中的条目太多,并且值在编辑区域中显示完美,但在数组中以不同的顺序存储。
我在 wordpress 中使用自定义字段来存储元值。一些自定义字段有多个值。我正在使用“get post meta”检索数组,该数组返回一个数组,正如预期的那样。但似乎不同的项目是在没有任何逻辑的情况下订购的。有些按照输入的顺序出现,有些则以相反的顺序出现,有些完全混乱..我会错过什么?
我无法再更改项目的存储方式。数据库中的条目太多,并且值在编辑区域中显示完美,但在数组中以不同的顺序存储。
我最近遇到了同样的问题,这是我发现的:
当您使用 时get_post_meta()
,WordPress 会检查给定对象(帖子)的元数据是否已经加载;如果有,那么它在对象缓存(易失性、apc、memcached 等)上并从那里加载它。
如果元数据不在对象缓存中,则它会通过 加载该对象的所有元数据update_meta_cache()
,这会在没有ORDER BY
如果您的存储引擎是 MyISAM,则每次更新元数据时都会以随机顺序返回结果,但是在使用 InnoDB 时,返回结果的顺序似乎是一致的(至少在我的测试中)
这可能会也可能不会。Wordpress 有点像自由能源机器——它违反了一些有用的概念。
您的所有元数据都存储在postmeta
表中。该表有几个字段:元 ID、帖子 ID、元键、值。每次添加元数据时,都会在此表中添加一行。但是,每次更新元数据时,都不会更改行顺序。
get_post_meta
通常以相同的顺序返回行,所以我猜你正在某处进行某种排序。我们可以看看一些代码吗?如果它总是在上升或下降,但从不随机混合,那么你在sort()
某个地方迷路了。