检索存储在数组中的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非常有效。我做错了什么?
最合适的回答,由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 );