我是PHP的新手,请原谅我。我想以以下格式显示一些数据:
“Post name”-“自定义字段字符串(在本例中为‘Custom\\u date’)”
我目前正在使用以下PHP代码
$output .= $indent . \'<li id="item_\'.$page->ID.\'"><span>\'.apply_filters( \'the_title\', $page->post_title, get_post_meta($post->ID,\'item_\',TRUE), $current_custom_date = $page->$custom_date ) .\' - \' . $current_custom_date . \'</span>\';
标题和破折号显示得很完美。然而,自定义字段字符串只是显示“Array”,所以现在看起来是这样的。
“职位名称”-数组
如何使其正确显示custom\\u日期?正如您所看到的,我已经将get\\u post\\u meta设置为“true”,所以这不应该是问题所在。
SO网友:s_ha_dum
设置的第三个参数get_post_meta
到true
不保证您获得字符串。该参数的作用是控制返回的数据库行数。什么时候true
您只得到一个结果,而不是数据库中所有匹配行的数组。您将获得一个值,但只有在将字符串保存到数据库时,它才会是字符串。如果您保存了一个数组,那么仍然会有一个数组。
法典中有一条关于这一点的注释:
如果使用此方法获取序列化数组,则希望$single为true以实际获取未序列化数组。如果传入false或不传入,则将有一个1的数组,索引0处的值将是序列化字符串。
http://codex.wordpress.org/Function_Reference/get_post_meta
听起来这就是正在发生的事情。与您的
item_
键是数据库中的一个数组(序列化),因此它仍然是一个数组,即使它是“单个”结果。我不能自信地告诉你如何找回它,但它应该是这样的:
$my_meta = get_post_meta($post->ID,\'item_\',TRUE);
echo $my_meta[0]; // or
echo $my_meta[\'some_key\'];
在代码的上下文中,您不需要echo,因为您使用的是字符串,而不是打印它。