这个documentation 从…起get_post_meta
听起来好像single
参数将确定是否在数组中返回元值。例如:
// If I set single to false, or leave it blank it\'s returned as an array
[my-meta] => Array
(
[0] => my-value
)
// If I set single to true, it\'s returned as a string
[my-meta] = my-value
如果我只返回单个元键的数据,这就可以了。。。但如果我想返回所有元数据,但将它们全部作为字符串返回(单个),则会失败。
要获取所有具有字符串值的元值,正确的调用应该是:
$meta = get_post_meta( $transaction->ID, false, true );
但这会返回数组值,并完全忽略
single
价值
为什么?有没有一种方法可以获取所有元数据,但不需要使用单元素数组?对我来说,这些都是不必要的。
编辑:为了澄清我的问题,我会撒谎来获得所有的元,如下所示:
array() {
[my-meta-1] = my-value
[my-meta-2] = my-value
[my-meta-3] = my-value
[my-meta-4] = my-value
}
而不是像这样(这似乎是我唯一能做到的行为):
array() {
[my-meta-1] => Array
(
[0] => my-value
)
[my-meta-2] => Array
(
[0] => my-value
)
[my-meta-3] => Array
(
[0] => my-value
)
[my-meta-4] => Array
(
[0] => my-value
)
}
最合适的回答,由SO网友:s_ha_dum 整理而成
如果我只返回单个元键的数据,这就可以了。。。但如果我想返回所有元数据,但将它们全部作为字符串返回(单个),则会失败。
这没有多大意义。PHP中的函数只能返回单个值,因此无法将所有元数据作为字符串返回(复数)。它必须显示为数组或对象。这就是函数所做的--你得到一个字符串或数组形式的值。如果您没有指定密钥,那么代码无法知道您想要哪个密钥,因此您可以通过defaurl获得所有密钥not 仅有一个的当您不检索单个值时,WordPress不会折叠嵌套数组。如果这是您想要的,请与Trac上的核心开发人员讨论。同时,自己折叠阵列:
$meta = get_post_meta(350);
var_dump($meta);
foreach ($meta as $k => $v) {
$meta[$k] = array_shift($v);
}
或:
foreach ($meta as &$v) {
$v = array_shift($v);
}
这可能不是你所希望的答案,但我很肯定它是准确的。可能有一个过滤器,但我怀疑这样做是否值得。