无法遍历类别循环中的帖子。只获得第一项

时间:2014-09-03 10:36:10

标签: php json wordpress loops posts

我正在尝试使用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);
?>

有什么想法吗?感谢。

1 个答案:

答案 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;