我试图从我的wordpress页面制作自定义json feed。问题是循环似乎覆盖了每个对象,因此它只将最后一个对象打印为json。我也试过在循环中移动回声,但是它看起来可能不会在浏览器中格式化。
这是我的代码:
foreach ($posts as $post) {
$r = str_replace("\n",'', shorten_txt($post->post_content, 500));
$n = str_replace("\r", '', $r);
$post_data = array(
'title' => get_the_title($post->ID),
'link' => get_permalink($post->ID),
'image' => catch_that_image(),
'content' => $n,
'time' => strtotime($post->post_date_gmt));
$data = (array('item' => $post_data));
}
echo json_encode($data);
答案 0 :(得分:0)
$data
的声明发生在foreach
内,这意味着每次分配值时都会重新初始化它。我不确定你是否错误地做了这件事,或者你不确定如何做到这一点。
试试这个
$data = array();
foreach ($posts as $post) {
$r = str_replace("\n",'', shorten_txt($post->post_content, 500));
$n = str_replace("\r", '', $r);
$post_data = array(
'title' => get_the_title($post->ID),
'link' => get_permalink($post->ID),
'image' => catch_that_image(),
'content' => $n,
'time' => strtotime($post->post_date_gmt));
$data[] = (array('item' => $post_data));
}
echo json_encode($data);
这样做,它是在$data
循环之外声明foreach
变量,并且赋值被推送到此数组。希望这会有所帮助。