gpt4 book ai didi

wordpress - 所有键的 get_post_meta 带回数组,而不是单个值

转载 作者:行者123 更新时间:2023-12-05 00:41:26 25 4
gpt4 key购买 nike

$meta = get_post_meta($post_id,'',true);

返回 $post_id 的所有元值,但它为每个值返回一个数组,如下所示: enter image description here

如果我将第三个参数 - single - 设置为 false,但它设置为 true,我可能会预料到这一点。我在 codex 中没有找到任何关于 key 为空时返回的确切内容的内容。

是否有人必须在这里提供信息并知道如何取回所有键,每个键值都是单个值而不是值数组?

最佳答案

答案是:这是设计使然,但似乎没有记录在 Codex 中。

如果您查看真正的文档(源代码),您会看到 get_post_meta 调用 get_metadata。通过检查 get_metadata 的代码,我们可以看到如果 $meta_key 没有被发布,那么它在评估 if $single 之前返回值> 是否设置:

 // Previously, $meta_cache is set to the contents of the post meta data

// Here you see if there is no key set, it just returns it all
if ( ! $meta_key ) {
return $meta_cache;
}

// It's not until later than $single becomes a factor
if ( isset($meta_cache[$meta_key]) ) {
if ( $single )
return maybe_unserialize( $meta_cache[$meta_key][0] );
else
return array_map('maybe_unserialize', $meta_cache[$meta_key]);
}

如果您使用的是 PHP 5.3+,您可以通过以下方式获得所需的内容:

// Get the meta values
$meta = get_post_meta($post_id,'',true);

// Now convert them to singles
$meta = array_map(function($n) {return $n[0];}, $meta);

或者,如果你想变得更漂亮,你可以围绕 get_post_meta 函数编写自己的“包装器”,如下所示:

function get_all_post_meta($post_id) {
// Get the meta values
$meta = get_post_meta($post_id,'');

// Now convert them to singles and return them
return array_map(function($n) {return $n[0];}, $meta);
}

然后你可以像这样使用它:

$meta = get_all_post_meta($post_id);

或者,如果你不是 PHP 5.3+(你应该是!),你可以这样做:

function get_all_post_meta($post_id) {
// Get the meta values
$meta = get_post_meta($post_id,'');

foreach($meta AS $key => $value) {
$meta[$key] = $value[0];
}

return $meta;
}

关于wordpress - 所有键的 get_post_meta 带回数组,而不是单个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35027953/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com