我正在尝试使用php为wordpress构建自定义json feed。
已经完成了,你可以看到。
问题是循环帖子只输出同一类别中的一个项目。
这是我的php代码:
<?php
header("Content-type: application/json");
class Item {
public $id = "";
public $title = "";
public $thumb = "";
}
class Category {
public $id = "";
public $title = "";
public $item = array();
}
$finalData = array();
//Get sub-categories from 'news'
$idObj = get_category_by_slug('news');
$id = $idObj->term_id;
$cat_args=array(
'orderby' => 'id',
'order' => 'ASC',
'parent' => $id
);
$categories=get_categories($cat_args);
//Loop through categories
foreach($categories as $category) {
$args=array(
'showposts' => 10,
'category__in' => array($category->term_id),
'caller_get_posts'=>1
);
$posts=get_posts($args);
$a = new Category();
$a->id = $category->term_id;
$a->title = $category->name;
$arrayForItems = array();
//Loop through first 10 posts from this categorie
if ($posts) {
$actualItem = $arrayForItems[] = new Item();
$actualItem->id = get_the_ID();
$actualItem->title = get_the_title();
$img = wp_get_attachment_image_src( get_post_thumbnail_id(get_the_ID()), 'appthumb' );
$actualItem->thumb = $img;
}
$a->item = $arrayForItems;
$finalData[] = $a;
};
echo json_encode($finalData);
?>
有什么想法吗?感谢。
答案 0 :(得分:2)
那是因为你说只打印一次。添加while语句应该有效:
$count = 0;
while($count < 10)
{
if ($posts) {
$actualItem = $arrayForItems[] = new Item();
$actualItem->id = get_the_ID();
$actualItem->title = get_the_title();
$img = wp_get_attachment_image_src( get_post_thumbnail_id(get_the_ID()), 'appthumb' );
$actualItem->thumb = $img;
}
$count++;
}
编辑:这应该有用
foreach ($posts as $post):
setup_postdata($post);
//Loop through first 10 posts from this categorie
if ($posts) {
$actualItem = $arrayForItems[] = new Item();
$actualItem->id = get_the_ID();
$actualItem->title = get_the_title();
$img = wp_get_attachment_image_src( get_post_thumbnail_id(get_the_ID()), 'appthumb' );
$actualItem->thumb = $img;
}
$a->item = $arrayForItems;
$finalData[] = $a;
endforeach;