1

我在 wordpress 中使用自定义字段来存储元值。一些自定义字段有多个值。我正在使用“get post meta”检索数组,该数组返回一个数组,正如预期的那样。但似乎不同的项目是在没有任何逻辑的情况下订购的。有些按照输入的顺序出现,有些则以相反的顺序出现,有些完全混乱..我会错过什么?

我无法再更改项目的存储方式。数据库中的条目太多,并且值在编辑区域中显示完美,但在数组中以不同的顺序存储。

4

2 回答 2

0

我最近遇到了同样的问题,这是我发现的:

当您使用 时get_post_meta(),WordPress 会检查给定对象(帖子)的元数据是否已经加载;如果有,那么它在对象缓存(易失性、apc、memcached 等)上并从那里加载它。

如果元数据不在对象缓存中,则它会通过 加载该对象的所有元数据update_meta_cache(),这会在没有ORDER BY

如果您的存储引擎是 MyISAM,则每次更新元数据时都会以随机顺序返回结果,但是在使用 InnoDB 时,返回结果的顺序似乎是一致的(至少在我的测试中)

于 2013-11-07T14:31:09.560 回答
0

这可能会也可能不会。Wordpress 有点像自由能源机器——它违反了一些有用的概念。

您的所有元数据都存储在postmeta表中。该表有几个字段:元 ID、帖子 ID、元键、值。每次添加元数据时,都会在此表中添加一行。但是,每次更新元数据时,都不会更改行顺序

get_post_meta通常以相同的顺序返回行,所以我猜你正在某处进行某种排序。我们可以看看一些代码吗?如果它总是在上升或下降,但从不随机混合,那么你在sort()某个地方迷路了。

于 2013-05-02T23:15:42.710 回答