views:

703

answers:

2

I have created the function below which is intended to list the sub categories of the parent with the id of 3.

The function should also return meta data from the first post in each sub category.

This works (kinda) but instead of just getting one set of data, it returns 3 sets with different outcomes.

Any ideas why?

global $cat;
  global $post;
  $categories = get_categories('child_of=3');
  foreach ($categories as $cat) :
    $postslist = get_posts($cat->cat_ID, 'numberposts=1&order=DESC');
    foreach ($postslist as $post) :
     $option = '<li id="'.get_post_meta($post->ID, 'id', true).'">';
     $option .='<a class="preview" rel="'.get_post_meta($post->ID, 'thumbnail', true).'" ';
     $option .='href="'.get_bloginfo('url').'/'.$post->post_name.'">';
     $option .=$cat->cat_name;
     $option .='</a>';
     $option .='</li>';
    echo $option;
    endforeach;
  endforeach;
A: 

I have figured out where i was going wrong! This:

$postslist = get_posts($cat->cat_ID, 'numberposts=1&order=DESC');

Has been replaced with:

$postslist = get_posts('category='.$cat->cat_ID.'numberposts=1&order=DESC');

This gives the actual category id.

DanC
+1  A: 

If you look at the docs at wordpress.org for get_posts() you will see that the function only has one argument.

get_posts('numberposts=1&category='. $cat->cat_ID .'&order=DESC');
slosd