2014-09-03 2 views
0

Я пытаюсь создать пользовательский json feed для wordpress с php.Нельзя зацикливать сообщения внутри цикла категорий. Только получить первый элемент

Это уже сделано, как вы можете видеть.

Проблема в том, что цикл через сообщения выводит только один элемент из той же категории.

Вот мой 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); 
?> 

Любая идея? Благодарю.

ответ

2

Это потому, что вы говорите, что печатаете только один раз. Добавление в то время как оператор должен работать:

$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++; 
} 

EDIT: Это должно работать

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; 
+1

петля Еогеасп больше подходит для этого случая, нет? –

+0

Спасибо Howlin. Теперь я могу получить 10 сообщений для каждой категории, но пост всегда один и тот же! Есть идеи? –

+0

@ RafaelMartins, проверьте мои изменения, чтобы они работали. – Howli