将多个值检索到Post Meta(使用数组)

时间:2012-05-05 作者:maarten

检索存储在数组中的post\\u元数据时遇到问题。我使用它来存储阵列:

add_action( \'comment_post\', \'add_food\', 1 );
function add_food(){
    global $post;
    $testvalues = array(\'bread\', \'cake\');
    update_post_meta($post->ID, \'food\', $testvalues);
}
这是用来检索它的:

add_filter(\'the_content\', \'print_food\');
function print_food($content){
    global $post;
    $custom_fields = get_post_custom($post->ID);
    $food_field = $custom_fields[\'food\'];
    $content .= $food_field[0];
    return $content;
}
但是,这会添加到我的页面内容中:

a: 2:{i:0;s:5:“面包”;i:1;s:4:“蛋糕”}

该技术对于comment\\u meta非常有效。我做错了什么?

1 个回复
最合适的回答,由SO网友:mrwweb 整理而成

啊哈!我想我找到了你的答案。两个事实:

上的$meta\\u value参数的说明add_post_meta() functions\'s codex page 注意:数组将被序列化为字符串。

上的$single参数说明get_post_meta() function\'s codex page 注意:如果设置为true,则函数将以字符串形式返回单个结果。如果为false或未设置,则该函数返回一个自定义字段数组。这是不直观的。例如if you fetch a serialized array with this method you want $single to be true to actually get an unserialized array back. 如果传入false或不传入,则将有一个1的数组,索引0处的值将是序列化字符串。(增加强调)

因此,这个[未测试的]片段应该将食物数组作为数组而不是序列化字符串。

$food_field = get_post_meta( $post->ID, \'food\', true );

结束

相关推荐

警告:in_array()要求参数2为数组,给出的值为空

在一个运行版本3.1.3的新构建的站点上,有210个主题处于活动状态,没有插件,当我单击“媒体”进入媒体管理器时,我发现以下错误:警告:explode()要求参数2为字符串,数组在C:\\xamplite\\htdocs\\testsite\\wp includes\\query中给出。php在线2390警告:in\\u array()要求参数2为数组,C:\\xamplite\\htdocs\\testsite\\wp includes\\query中给出的为null。php在线2399警告:in\\u